2012-04-03 24 views
5

Tôi muốn thay thế "a" của "abababababababab" với 001002003004 ...... đó là "001b002b003b004b005b ....."Java thay thế chuỗi với sự gia tăng số

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; 

tuy nhiên điều này là người nghèo hiệu quả, khi chuỗi đủ lớn, nó sẽ mất vài phút!

bạn có cách hiệu quả cao không? cảm ơn rất nhiều!

+0

kích thước tối đa của chuỗi, 999 lần một 'a' là gì? (kể từ khi bạn chỉ có ba chữ số) – jb10210

+0

có, file.problem rất lớn được giải quyết, cảm ơn. – chandler

Trả lời

8

Sử dụng một Matcher để tìm và thay thế các 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); 
} 

Đầu ra:

001b002b003b004b005b006b007b008b 
+0

Cảm ơn rất nhiều, rất nhanh. – chandler

Các vấn đề liên quan