2012-04-03 22 views
5

quiero reemplazar "a" de "abababababababab" con 001002003004 ...... que es "001b002b003b004b005b ....."Java reemplazar cadena al aumentar el número

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; 

sin embargo, esto es pobre eficiencia, cuando la cuerda es lo suficientemente grande, ¡llevará minutos!

¿tiene una manera de alta eficiencia? muchas gracias!

+0

¿Cuál es el tamaño máximo de la cadena, 999 veces en una 'a'? (ya que solo tiene tres dígitos) – jb10210

+0

sí, archivo muy grande.problema resuelto, gracias. – chandler

Respuesta

8

Utilice un Matcher para buscar y reemplazar los 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); 
} 

Salidas:

001b002b003b004b005b006b007b008b 
+0

Muchas gracias, muy rápido. – chandler

Cuestiones relacionadas