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

时间:2018-10-03 19:03:47

标签: java string algorithm

例如,我有String:declare @xml xml set @xml='<auditElement> <RequestOrigination> <IP>20.20.20.20</IP> </RequestOrigination> </auditElement>'; SELECT @xml.value('(/auditElement/RequestOrigination/IP/text())[1]','varchar(20)'); ,并且我想应用算法,该算法将通过以下方式转换字符串:

61109010140000071219812874

如您所见,

关键是选择String的前三个字母,然后添加一个空格,然后在两个字符之后添加两个破折号,然后是三个,再是两个字符。就像是: 611 09-010-14-000-00-712-19-812-87-4

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

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

1 个答案:

答案 0 :(得分:0)

上面的注释中的答案是有效的,但是如果您希望建立一个可以构建所需内容的常规循环,则可以解决问题:

    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

}