Substituir todas as ocorrências de uma string com JavaScript

233d atrás

0 0

Em browsers modernos você pode simplesmente usar a função replaceAll do #JavaScript.

Considere a seguinte string:

const myStr = 'abc olá abc teste abc replace abc';

Agora vamos criar uma função que substitui todas as ocorrências:

function substituirTodos(str, pattern, replacement) {
    return pattern.replaceAll(pattern, replacement);
}
Essa função recebe 3 argumentos:
  • str: a string em que será feita a busca e substituição
  • pattern: o padrão que você quer encontrar e substituir
  • replacement: a string que será colocada no lugar

Caso você queira substituir todas ocorrências de "abc" com "efg" você chamar a função substituirTodos assim:

substituirTodos(myStr, 'abc', 'efg'); // efg olá efg teste efg replace efg

Browsers antigos

Alguns browsers não tem a função replaceAll. Nesse caso, você pode escrever a função substituirTodos da seguinte forma para compatibilidade:

function substituirTodos(str, pattern, replacement) {
    return str.replace(new RegExp(pattern, 'g'), replacement);
}

Se o parâmetro "pattern" puder receber strings com caracteres especiais, você terá que tratá-los, a função ficaria dessa forma:

function replaceAll(str, pattern, replacement) {
    return str.replace(new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\!code1!amp;'), 'g'), replacement);
}

Lembrando que tanto a função para browsers atuais e as 2 implementações para browsers antigos são chamadas da mesma forma, e retornam os mesmos resultados.

Referências

Para mais informações acesse a documentação:

String.prototype.replaceAll() - JavaScript | MDN

The replaceAll() method of String values returns a new string with all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp, and the replacement can be a string or a function to be called for each match. The original string is left unchanged.


Comentários (0)

0/512
Link