Effizientes Ersetzen mehrerer Teilzeichenfolgen in einer Zeichenfolge in Java
Wenn Sie mit der Notwendigkeit konfrontiert werden, mehrere Teilzeichenfolgen innerhalb einer Zeichenfolge zu ersetzen, ist die Versuchung groß, dies zu tun greifen Sie auf den Brute-Force-Ansatz zurück, indem Sie die Methode string.replace() wiederholt anwenden. Dies kann jedoch bei großen Strings oder beim Arbeiten mit zahlreichen Strings ineffizient sein.
Reguläre Ausdrücke nutzen
Eine effizientere Lösung besteht darin, reguläre Ausdrücke zu nutzen. Mit regulären Ausdrücken können Sie komplexe Suchmuster definieren und Texttransformationen in einem einzigen Vorgang durchführen.
Beispielverwendung
Stellen Sie sich ein Szenario vor, in dem Sie Token wie „ „t%“ und „verage%“ mit in einer Karte gespeicherten Werten. Mit StringUtils von Apache Commons Lang können Sie ein Muster und einen Matcher wie folgt erstellen:
<code class="java">Map<String,String> tokens = new HashMap<>(); tokens.put("cat", "Garfield"); tokens.put("beverage", "coffee"); String template = "%cat% really needs some %beverage%."; // Create pattern of the format "%(cat|beverage)%" String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%"; Pattern pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(template);</code>
Als nächstes können Sie den Matcher verwenden, um alle Vorkommen der Token zu finden und sie durch die entsprechenden Werte zu ersetzen:
<code class="java">StringBuffer sb = new StringBuffer(); while(matcher.find()) { matcher.appendReplacement(sb, tokens.get(matcher.group(1))); } matcher.appendTail(sb); System.out.println(sb.toString());</code>
Vorteile regulärer Ausdrücke
Sobald der reguläre Ausdruck kompiliert ist, erfolgt die Suche in der Eingabezeichenfolge normalerweise sehr schnell. Darüber hinaus bieten reguläre Ausdrücke die Flexibilität, komplexe Suchmuster zu verarbeiten, beispielsweise solche mit Klammern und Quantoren.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Teilzeichenfolgen in einem Java-String effizient ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!