Java 将特定字符添加到字符串中特定位置的算法
例如,我有字符串:61109010140000071219812874,我想应用算法,该算法将以以下方式转换字符串: 611 09-010-14-000-00-712-19-812-87-4 如您所见,关键是选择字符串的前三个字母,然后添加一个空格,然后在两个字符后添加两个破折号,然后是三个,然后是两个字符。比如: ---- 只有我希望我的算法是通用的。例如,对于字符串6110901,输出为:611 09-01;对于字符串61109010,输出为:611 09-010Java 将特定字符添加到字符串中特定位置的算法,java,string,algorithm,Java,String,Algorithm,例如,我有字符串:61109010140000071219812874,我想应用算法,该算法将以以下方式转换字符串: 611 09-010-14-000-00-712-19-812-87-4 如您所见,关键是选择字符串的前三个字母,然后添加一个空格,然后在两个字符后添加两个破折号,然后是三个,然后是两个字符。比如: ---- 只有我希望我的算法是通用的。例如,对于字符串6110901,输出为:611 09-01;对于字符串61109010,输出为:611 09-010 我尝试使用StringBu
我尝试使用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
}
如果您发布了您尝试过的实际代码,可能会有人指出其中的错误。如果您不发布它,我们就不太可能.str.replaceAll....,1$2-$3-$4-$5-$6-$7-$8-$9-$10-$11或更严格地说:str=str.replaceAll^\\d{3}\\d{2}\\d{3}\\d{2}\\d{3}\\d{d{2}\\d{2}\\d{d{3}\\d{d{d}\\d{3}\\d{d{d}\\d}\\d{3}\\d{d}\\d{3-$9-$10-$9-$7-看见