JavaScriptNapisy

String.prototype.replaceAll()

Zwraca nowy napis, w którym wszystkie wystąpienia wzorca zamieniono na podany tekst lub wynik funkcji.

Zwraca
Nowy napis ze wszystkimi dopasowaniami zamienionymi na tekst zastępczy.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const slug = 'kurs javascript od podstaw'.replaceAll(' ', '-')
const template = 'Cześć {name}! {name}, masz nowe zadanie.'

console.log(slug)
console.log(template.replaceAll('{name}', 'Ola'))
Konsola
kurs-javascript-od-podstaw
Cześć Ola! Ola, masz nowe zadanie.

Definicja i zastosowanie

#

Metoda replaceAll() działa jak replace(), ale zawsze zamienia wszystkie dopasowania, a nie tylko pierwsze. Przy zwykłym tekście nie musisz budować wyrażenia regularnego z flagą g ani martwić się znakami specjalnymi.

Jako wzorzec możesz podać napis albo wyrażenie regularne, ale wyrażenie musi mieć flagę g. Bez niej metoda rzuci TypeError. Drugi argument, tak jak w replace(), może być tekstem (z sekwencjami $&, $1) lub funkcją.

Tak jak wszystkie metody napisów, replaceAll() nie zmienia oryginału, tylko zwraca nowy napis.

Składnia

#
Składnia
string.replaceAll(pattern, replacement)

Parametry

#
  • pattern

    string | RegExp

    Tekst albo wyrażenie regularne z flagą g. Zamienione zostaną wszystkie wystąpienia.
  • replacement

    string | function

    Tekst zastępczy albo funkcja wywoływana dla każdego dopasowania, której wynik trafia do nowego napisu.

Więcej przykładów

#
Znaki specjalne traktowane dosłownie
JavaScript
const version = 'v1.2.3'

console.log(version.replaceAll('.', '-'))
console.log(version.replace(/./g, '-'))
Konsola
v1-2-3
------

W wyrażeniu regularnym kropka oznacza dowolny znak, więc /./g zamieniło wszystko. replaceAll() z napisem traktuje kropkę dosłownie.

Wyrażenie regularne wymaga flagi g
JavaScript
const text = 'a-b-c'

console.log(text.replaceAll(/-/g, ' + '))

try {
  text.replaceAll(/-/, ' + ')
} catch (error) {
  console.log(error.name)
}
Konsola
a + b + c
TypeError
Funkcja jako zamiennik
JavaScript
const text = 'Uczę się html, css i javascript'
const loud = text.replaceAll(/html|css|javascript/g, (tech) => tech.toUpperCase())

console.log(loud)
Konsola
Uczę się HTML, CSS i JAVASCRIPT

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Do zamiany zwykłego tekstu replaceAll() jest najprostsze i najczytelniejsze. Po wyrażenia regularne sięgaj wtedy, gdy potrzebujesz wzorca, np. dowolnej cyfry.
  • Pamiętaj o fladze g przy wyrażeniu regularnym. Bez niej zamiast wyniku dostaniesz TypeError.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.