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
0
A
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.
Verwenden Sie String.indexOf (Wert, fromIndex) iterativ – ControlAltDel