将字符添加到String的中间

时间:2017-01-13 18:30:11

标签: java regex

我需要您的帮助才能将12345678之类的字符串转换为1234.56.78

[FOUR DIGITS].[TWO DIGITS].[TWO DIGITS]

我的代码:

String s1 = "12345678";
s1 = s1.replaceAll("(\\d{4})(\\d+)", "$1.$2").replaceAll("(\\d{2})(\\d+)", "$1.$2");
System.out.println(s1);

但结果是12.34.56.78

3 个答案:

答案 0 :(得分:3)

如果您确定您始终使用相同的格式输入,那么您只需使用StringBuilder并执行以下操作:

String input = "12345678";
String output = new StringBuilder().append(input.substring(0, 4))
        .append(".").append(input.substring(4, 6)).append(".")
        .append(input.substring(6)).toString();
System.out.println(output);

此代码通过将点附加到指定位置的子字符串来创建新的String。

<强>输出:

1234.56.78

答案 1 :(得分:3)

使用单个replaceAll()方法更新正则表达式,否则第二个replaceAll()调用将替换,包括前四位数。

{{1}}

答案 2 :(得分:2)

这会在每对字符之后加上点,除了第一对:

str = str.replaceAll("(^....)|(..)", "$1$2.");

这适用于任何长度的字符串,包括奇数长度。

例如

"1234567890123" --> "1234.56.78.90.12.3"