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

Java 将特定字符添加到字符串中特定位置的算法,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

例如,我有字符串: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

}

如果您发布了您尝试过的实际代码,可能会有人指出其中的错误。如果您不发布它,我们就不太可能.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-看见