2012-04-03 27 views
5

我想「abababababababab」與001002003004 ...... 那就是「001b002b003b004b005b .....」來代替「A」的Java替換字符串,越來越多的

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; 

然而,這是窮人效率,當字符串足夠大時,它會花費幾分鐘!

你有一個高效率的方式嗎? 非常感謝!

+0

什麼是字符串,999倍'了'的最大尺寸是多少? (因爲你只有三位數) – jb10210 2012-04-03 09:08:44

+0

是的,非常大的file.problem解決了,謝謝。 – chandler 2012-04-03 14:43:42

回答

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 
+0

非常感謝,非常快。 – chandler 2012-04-03 14:42:23