将特定字符添加到字符串中特定位置的算法



例如,我有字符串:61109010140000071219812874,我想应用算法,它将通过以下方式转换字符串:

611 09-010-14-000-00-712-19-812-87-4

如您所见,重点是选择字符串的前三个字母,然后添加一个空格,然后在两个字符之后添加两个破折号,然后是三个,然后是两个字符。像这样:### ##-###-##-###-##-###-##-###

只有我希望我的算法是通用的。例如,对于字符串6110901输出为:611 09-01,对于字符串61109010,输出为:611 09-010

我尝试使用StringBuilder和addCharAt方法,但不幸的是它覆盖了我的字符串。

注释中的上述答案有效,但如果你想要一个构建你想要的常规循环,这应该可以解决问题:

public static void main(String args[]) {
String str = "61109010140000071219812874";
String output = "";
int segment = 2;
for(int i = 0; i < str.length(); i += segment){
segment = segment == 3 ? 2 : 3;
String seg = str.substring(i, Math.min(i + segment, str.length()));
char next = i == 0 ? ' ' : '-';
seg += next;
output += seg;            
}
output = output.substring(0, output.length() - 1);
System.out.println(output);   //611 09-010-14-000-00-712-19-812-87-4
}

最新更新