将字符串中的所有数字重复三次

Triplicate all digits in a string

我有一个包含像 "abc123" 这样的数字的字符串,我希望每个数字都出现 3 次,如下所示:"abc111222333".

有没有办法用 replaceAll("\d+.*", ???) 做到这一点,而 ? 是找到的任何数字?

分别还有比这"better"的吗?:

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

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

解释:

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