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
Przykład
#const slug = 'kurs javascript od podstaw'.replaceAll(' ', '-')
const template = 'Cześć {name}! {name}, masz nowe zadanie.'
console.log(slug)
console.log(template.replaceAll('{name}', 'Ola'))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
#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
#const version = 'v1.2.3'
console.log(version.replaceAll('.', '-'))
console.log(version.replace(/./g, '-'))W wyrażeniu regularnym kropka oznacza dowolny znak, więc /./g zamieniło wszystko. replaceAll() z napisem traktuje kropkę dosłownie.
const text = 'a-b-c'
console.log(text.replaceAll(/-/g, ' + '))
try {
text.replaceAll(/-/, ' + ')
} catch (error) {
console.log(error.name)
}const text = 'Uczę się html, css i javascript'
const loud = text.replaceAll(/html|css|javascript/g, (tech) => tech.toUpperCase())
console.log(loud)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
gprzy wyrażeniu regularnym. Bez niej zamiast wyniku dostanieszTypeError.
Powiązane hasła
#- String.prototype.replace()Zwraca nowy napis, w którym pierwsze dopasowanie wzorca (albo wszystkie, przy fladze g) zamieniono na inny tekst.
- String.prototype.split()Dzieli napis na tablicę fragmentów według separatora: znaku, tekstu lub wyrażenia regularnego.
- RegExpWyrażenie regularne, czyli wzorzec do wyszukiwania, sprawdzania i zamiany fragmentów tekstu.
- Array.prototype.join()Łączy elementy tablicy w jeden napis z wybranym separatorem.
Widzisz błąd albo brakuje przykładu? Napisz do nas.