我有以下文字:

some cool color #12eedd more cool colors #4567aa


我希望此字符串将被转换为:

some cool color #{1} more cool colors #{2}


用Java(1.6)如何做到?

到目前为止,我发现的是颜色的正则表达式:#[0-9abcdef]{3,6}

最佳答案

您可以在Matcher类中使用appendReplacementappendTail

String data = "some cool color #12eedd more cool colors #4567aa";
StringBuffer sb = new StringBuffer();

Pattern p = Pattern.compile("#[0-9a-f]{3,6}", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(data);
int i = 1;
while (m.find()) {
    m.appendReplacement(sb, "#{" + i++ + "}");
}
m.appendTail(sb);//in case there is some text left after last match

String replaced = sb.toString();
System.out.println(replaced);


输出:

some cool color #{1} more cool colors #{2}

关于java - 如何使用Java中的正则表达式用字符串中的连续数字替换某些子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18741152/

10-10 03:38