好的,所以我有一个从看起来像这样的文件中读取整数的文件。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();
}
一个简单的解决方案:
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] 删除。
我来说两句