Java заменить строку с увеличением числа - PullRequest
5 голосов
/ 03 апреля 2012

Я хочу заменить "a" из "abababababababab" на 001,002,003,004 ...... то есть "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 Ответ

8 голосов
/ 03 апреля 2012

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...