Řetězec JavaScriptu nahradit() a nahraditVšechny() metody

replace() metoda v JavaScriptu hledá v řetězci zadanou hodnotu nebo regulární výraz a vrací nový řetězec s nahrazenými některými nebo všemi odpovídajícími výskyty.

replace() metoda přijímá dva parametry:

const newStr = string.replace(substr|regexp, newSubstr|function);

Prvním parametrem může být řetězec nebo regulární výraz. Pokud se jedná o řetězcovou hodnotu, bude nahrazena pouze první instance hodnoty.

Chcete-li nahradit všechny výskyty zadané hodnoty, musíte použít regulární výraz s globálním modifikátorem (g ).

Druhým parametrem může být nová řetězcová hodnota nebo funkce. Pokud se jedná o funkci, bude vyvolána po provedení shody. Jako náhradní řetězec bude použita návratová hodnota funkce.

replace() metoda nemění původní objekt řetězce. Vrátí pouze nový řetězec.

Příklady

Následující příklad ukazuje, jak můžete zadat náhradní řetězec jako parametr:

const str = "JavaScript Courses";
const newStr = str.replace('JavaScript', 'Java');

console.log(newStr); // Java Courses

Chcete-li provést globální vyhledávání Chcete-li nahradit všechny výskyty řetězce, použijte regulární výraz s globálním modifikátorem:

const str = "Mr. Red owns a red bike and a red car.";
const newStr = str.replace(/red/g, 'blue');

console.log(newStr);
// Mr. Red owns a blue bike and a blue car.

Pro globální nerozlišování velkých a malých písmen nahrazení, zkombinujte globální modifikátor s modifikátorem ignorování velkých a malých písmen:

const str = "Mr. Red owns a red bike and a red car.";
const newStr = str.replace(/red/gi, 'blue');

console.log(newStr);
// Mr. blue owns a blue bike and a blue car.

Nakonec můžete také použít funkci jako druhý parametr pro vrácení nahrazujícího textu:

const str = "Mr. Red owns a red bike and a red car.";
const newStr = str.replace(/red/gi, (match) => {
    return match.toUpperCase();
});

console.log(newStr);
// Mr. RED owns a RED bike and a RED car.

replaceAll() Metoda

nejnovějšíThe replaceAll() metoda je novým přírůstkem do JavaScriptu (stále ve fázi 4), který má být zahrnut do ES2021.

Tato metoda nahradí všechny výskyty hledaného řetězce nahrazujícím textem a vrátí nový řetězec.

Stejně jako replace() můžete jako parametr vyhledávání předat hodnotu nebo regulární výraz:

const str = "Mr. Red owns a red bike and a red car.";
const newStr = str.replaceAll(/red/gi, 'blue');

console.log(newStr);
// Mr. blue owns a blue bike and a blue car.

Všimněte si, že A RegExp bez globálního (g ) modifikátor vyvolá TypeError :"replaceAll musí být voláno s globálním RegExp".

Můžete také předat funkci (místo řetězce) jako druhý parametr do replaceAll() metoda:

const str = "Mr. Red owns a red bike and a red car.";
const newStr = str.replace(/red/gi, (match) => {
    return match.toLowerCase();
});

console.log(newStr);
// Mr. red owns a red bike and a red car.