2016-04-15 2 views
0

Ich habe eine Zeichenfolge, die aus insgesamt n gleichen Teilzeichenfolgen besteht. Zum Beispiel hat die Zeichenkette Teilstrings (ich sage, dass es 3 Mal aufgetreten ist). In einem allgemeineren Fall, in dem wir n gleiche Teilstrings in einer Zeichenkette haben, wie kann ich das i-te Vorkommen in der Zeichenkette ersetzen. A, Methode wie replace() für i-ten Teilstring. Ich möchte es in meinem Android-Code implementieren. (Englisch ist nicht meine Muttersprache, entschuldigen Sie bitte alle Fehler.).schnellste Möglichkeit zum Ersetzen von i-ten Vorkommen in einer Zeichenfolge

+3

Verwenden Sie String.indexOf (Wert, fromIndex) iterativ – ControlAltDel

Antwort

1
public static String replace(String input, String pattern, int occurence, String replacement){ 
    String result = input; 
    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(result); 
    if(occurence == 0){ 
     return result; 
    } else if(occurence == 1){ 
     m.find(); 
     result = result.substring(0,m.start()) + replacement + result.substring(m.end()); 
    } else { 
     m.find(); 
     int counter = 1; 
     try { 
      while((counter<occurence)&&m.find(m.start()+1)){ 
       counter++; 
      } 
      result = result.substring(0,m.start()) + replacement + result.substring(m.end()); 
     } catch(IllegalStateException ise){ 
      throw new IllegalArgumentException("There are not this many occurences of the pattern in the String."); 
     } 
    } 
    return result; 
} 

Scheint etwas ähnliches zu tun, was Sie wollen, wenn ich richtig verstehe.

Mit dem Matcher/Pattern-System ist es offen für viel komplexere Regex.