Ich möchte alle Instanzen eines Teilstrings in einer Zeichenfolge ersetzen, String.replaceAll()
akzeptiert jedoch nur ein Muster. Die Saite, die ich aus einem früheren Spiel stammt. Ist es möglich, dem Muster, das ich habe, Escapezeichen hinzuzufügen, oder gibt es eine Version replaceAll()
in einer anderen Klasse, die eine Literalzeichenfolge anstelle eines Musters akzeptiert?
115
Antworten:
Verwenden Sie einfach
String.replace(CharSequence,CharSequence)
eher alsreplaceAll
.quelle
System.out.println("hello world, hello life, hello you".replace("hello","hi"));
kehrt zurück"hi world, hi life, hi you"
.Das Verfahren entweicht hinzuzufügen ist
Pattern.quote()
.Aber wie Jon sagt, kannst du es einfach benutzen
replace()
. Trotz der Tatsache, dass es vomreplaceAll
Namen abweicht , ersetzt es alle Vorkommen genauso wiereplaceAll()
.quelle
Pattern.compile()
Kompiliert die Zeichenfolge als regulären Ausdruck, dh die Sonderzeichen erhalten die Sonderbedeutung. Das ist das genaue Gegenteil von demPattern.quote()
, was das OP verlangt und verlangt (quote()
sagt: "Behandle den String als Literal"). Vielleicht könnten Sie näher darauf eingehen, von welchen "unerwünschten Ergebnissen" Sie sprechen.Matcher.quoteReplacement("$aa +")
.Pattern.compile()
produziert einPattern
, nicht einString
, daher ist mir unklar, wie Sie es überhaupt verwendenreplaceAll
.