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

CLR*_*R45 5 java string

好吧,我有一个文件,从一个看起来像这样的文件读取整数. 123456-1324563.

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

例如,如果运算符左侧的数字少于右侧的数字,则会向字符串添加0,以便两个数字变为偶数并返回新的字符串.所以我需要使用方法将String 123456789-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();
}
Run Code Online (Sandbox Code Playgroud)

Ron*_*n C 4

一个简单的解决方案:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)