将字符串

时间:2016-07-24 16:55:06

标签: java regex replaceall

我有一个包含"abc123"等数字的字符串,我希望每个数字都显示3次,如下所示:"abc111222333"

有没有办法用replaceAll("\\d+.*", ???)执行此操作,而?是找到的数字?

分别是什么"更好"比这个?:

String input = "abc1x23z";
String output = input;

for (int i = 0, j = i; i < input.length(); i++) {
    char c = input.charAt(i);

    if ( Character.isDigit( c ) ) {
        String a = output.substring(0, j+1);
        String b = output.substring(j, output.length());

        output = a + c + b;
        j += 3;
    }else{
        j++;
    }
}

System.out.println(output);     // abc111x222333z

1 个答案:

答案 0 :(得分:3)

您可以使用"abc123".replaceAll("(\\d)", "$1$1$1")

说明:

  • \\d匹配单个数字
  • ()捕获群组
  • $1指向正则表达式每次匹配所捕获的第一个组