Java用越来越多的数字替换字符串

时间:2012-04-03 09:04:12

标签: java replace

我想用001,002,003,004替换“abababababababab”的“a”...... 那就是“001b002b003b004b005b .....”

int n=1
String test="ababababab";
int lo=test.lastIndexOf("a");
while(n++<=lo) Abstract=Abstract.replaceFirst("a",change(n));
//change is another function to return a string "00"+n;

然而这效率很低,当字符串足够大时,需要几分钟!

你有高效的方式吗? 非常感谢!

1 个答案:

答案 0 :(得分:8)

使用Matcher查找并替换a s:

public static void main(String[] args) {

    Matcher m = Pattern.compile("a").matcher("abababababababab");

    StringBuffer sb = new StringBuffer();
    int i = 1;
    while (m.find()) 
        m.appendReplacement(sb, new DecimalFormat("000").format(i++));
    m.appendTail(sb);        

    System.out.println(sb);
}

输出:

001b002b003b004b005b006b007b008b