Java填充从文件读取的字符串

CLR45

好的,所以我有一个从看起来像这样的文件中读取整数的文件。123456-1324563

该文件将这些数字作为字符串读取,而我试图弄清楚如何创建一种方法,将数字附加0到正在读取的数字的哪一侧小于另一侧。

例如,如果运算符左侧的数字少于右侧的数字,则会在字符串中添加0,以便两个数字变为偶数并返回新的String。因此,我需要将String123456789-123456转换成的方法123456789-000123456但是它需要确定哪一侧较短,并在其前面填充0,但仍返回整个字符串。

编辑:

这是我正在使用的该方法的最新版本,当+传入操作符,我得到ArrayIndexOutOfBoundsException但是它可以完美地与-运营商联系。

public String pad(String line, String operator){
    String str[] = line.split(Pattern.quote(operator));

    StringBuilder left = new StringBuilder(str[0]);
    StringBuilder right = new StringBuilder(str[1]);
    left = left.reverse();
    right = right.reverse();
    int len1 = left.length();
    int len2 = right.length();
    if(len1>len2){
        while(len1!=len2){
            right.append("0");
            len1--;
        }
    }else{
        while(len1!=len2){
            left.append("0");
            len2--;
        }
    }
    return left.reverse().toString()+operator+right.reverse().toString();
}
罗恩C

一个简单的解决方案:

public static String pad_num(String line){
    String[] groups = line.split("-");
    String left = groups[0],
            right = groups[1];

    if(left.length() < right.length()) {
        do {
            left = '0'+left;
        } while (left.length() < right.length());
    } else if(right.length() < left.length()) {
        do {
            right = '0'+right;
        } while (right.length() < left.length());
    }

    return left+'-'+right;
}

如果没有固定的运算符,则可以将其作为参数传递:

public static String pad_num(String line, String operator){
    //prevent ArrayIndexOutOfBoundsException
    if(!line.contains(operator)) {
        return line;
    }

    //prevent PatternSyntaxException by compiling it as literal
    String[] groups = Pattern.compile(operator, Pattern.LITERAL).split(line);

    //do the same
    ...

    return left+operator+right;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章