A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll below:

String.prototype.replaceAll() - JavaScript | MDN

String.prototype.replaceAll()

Baseline Widely available

Die replaceAll() Methode von String Werten gibt einen neuen String zurück, bei dem alle Übereinstimmungen eines pattern durch eine replacement ersetzt werden. Das pattern kann ein String oder ein RegExp sein, und die replacement kann ein String oder eine Funktion sein, die für jede Übereinstimmung aufgerufen wird. Der Originalstring bleibt unverändert.

Probieren Sie es aus
const paragraph = "I think Ruth's dog is cuter than your dog!";

console.log(paragraph.replaceAll("dog", "monkey"));
// Expected output: "I think Ruth's monkey is cuter than your monkey!"

// Global flag required when calling replaceAll with regex
const regex = /dog/gi;
console.log(paragraph.replaceAll(regex, "ferret"));
// Expected output: "I think Ruth's ferret is cuter than your ferret!"
Syntax
replaceAll(pattern, replacement)
Parameter
pattern

Kann ein String oder ein Objekt mit einer Symbol.replace Methode sein — das typische Beispiel ist ein regulärer Ausdruck. Jeder Wert, der nicht die Symbol.replace Methode besitzt, wird in einen String umgewandelt.

Wenn pattern ein regex ist, muss es das globale (g) Flag gesetzt haben, andernfalls wird ein TypeError ausgelöst.

replacement

Kann ein String oder eine Funktion sein. Der Ersatz hat dieselbe Semantik wie die von String.prototype.replace().

Rückgabewert

Ein neuer String, bei dem alle Übereinstimmungen eines Musters durch einen Ersatz ersetzt wurden.

Ausnahmen
TypeError

Wird ausgelöst, wenn das pattern ein regex ist, das nicht das globale (g) Flag gesetzt hat (wenn seine flags Eigenschaft nicht "g" enthält).

Beschreibung

Diese Methode verändert den String-Wert, auf dem sie aufgerufen wird, nicht. Sie gibt einen neuen String zurück.

Im Gegensatz zu replace() ersetzt diese Methode alle Vorkommen eines Strings, nicht nur das erste. Während es auch möglich ist, replace() mit einem globalen Regex zu verwenden, das dynamisch mit RegExp() konstruiert wird, um alle Instanzen eines Strings zu ersetzen, kann es zu unerwünschten Konsequenzen führen, wenn der String Sonderzeichen enthält, die in regulären Ausdrücken von Bedeutung sind (was passieren könnte, wenn der Ersatzstring aus Benutzereingaben stammt). Obwohl Sie diesen Fall mit RegExp.escape() abmildern können, um den regulären Ausdruck in ein literales Muster zu konvertieren, ist es einfacher, den String direkt an replaceAll() zu übergeben, ohne ihn in einen regex zu konvertieren.

function unsafeRedactName(text, name) {
  return text.replace(new RegExp(name, "g"), "[REDACTED]");
}
function semiSafeRedactName(text, name) {
  return text.replaceAll(name, "[REDACTED]");
}
function superSafeRedactName(text, name) {
  // only match at word boundaries
  return text.replaceAll(
    new RegExp(`\\b${RegExp.escape(name)}\\b`, "g"),
    "[REDACTED]",
  );
}

let report =
  "A hacker called ha.*er used special characters in their name to breach the system.";

console.log(unsafeRedactName(report, "ha.*er")); // "A [REDACTED]s in their name to breach the system."
console.log(semiSafeRedactName(report, "ha.*er")); // "A hacker called [REDACTED] used special characters in their name to breach the system."

report = "A hacker called acke breached the system.";

console.log(semiSafeRedactName(report, "acke")); // "A h[REDACTED]r called [REDACTED] breached the system."
console.log(superSafeRedactName(report, "acke")); // "A hacker called [REDACTED] breached the system."

Wenn pattern ein Objekt mit einer Symbol.replace Methode ist (einschließlich RegExp Objekte), wird diese Methode mit dem Zielstring und replacement als Argumenten aufgerufen. Der Rückgabewert wird der Rückgabewert von replaceAll(). In diesem Fall ist das Verhalten von replaceAll() vollständig durch die [Symbol.replace]() Methode kodiert und wird daher dasselbe Ergebnis wie replace() haben (abgesehen von der zusätzlichen Eingabevalidierung, dass der regex global ist).

Wenn das pattern ein leerer String ist, wird der Ersatz zwischen jedem UTF-16 Code-Element eingefügt, ähnlich dem Verhalten von split().

"xxx".replaceAll("", "_"); // "_x_x_x_"

Für weitere Informationen darüber, wie Regex-Eigenschaften (insbesondere das sticky Flag) mit replaceAll() interagieren, siehe RegExp.prototype[Symbol.replace]().

Beispiele Verwendung von replaceAll()
"aabbcc".replaceAll("b", ".");
// 'aa..cc'
Nicht globaler Regex wirft Fehler

Bei Verwendung eines regulären Ausdrucks-Suchwerts muss dieser global sein. Das funktioniert nicht:

"aabbcc".replaceAll(/b/, ".");
// TypeError: replaceAll must be called with a global RegExp

Das funktioniert:

"aabbcc".replaceAll(/b/g, ".");
("aa..cc");
Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4