好吧,我有一个文件,从一个看起来像这样的文件读取整数.
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)
一个简单的解决方案:
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)
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |