Eu quero usar str_replace
ou sua alternativa semelhante para substituir algum texto em JavaScript.
var text = "this is some sample text that i want to replace";
var new_text = replace_in_javascript("want", "dont want", text);
document.write("new_text");
deveria dar
this is some sample text that i dont want to replace
Se você deseja regex, quais são as implicações de desempenho em comparação com os métodos de substituição integrados.
str_replace
também aceita duas matrizes do mesmo comprimento, onde cada sequência na primeira matriz é substituída pela sequência na segunda matriz no mesmo índice. Consulte stackoverflow.com/a/5069776/296430 para a única função correta que encontrei até agora que imita esse comportamento exato em javascript.Respostas:
O uso de regex para substituição de string é significativamente mais lento que o uso de uma substituição de string.
Conforme demonstrado no JSPerf , é possível ter diferentes níveis de eficiência para criar uma regex, mas todos eles são significativamente mais lentos que uma simples substituição de cadeia. A regex é mais lenta porque :
Para uma execução simples de teste na página JS perf, documentei alguns dos resultados:
Os resultados para o Chrome 68 são os seguintes:
A fim de completar esta resposta (emprestando dos comentários), vale ressaltar que
.replace
apenas substitui a primeira instância do caractere correspondente. Só é possível substituir todas as instâncias por//g
. O trade-off de desempenho e a elegância do código podem ser considerados piores se a substituição de várias instânciasname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
ou piorwhile (name.includes(' ')) { name = name.replace(' ', '_') }
fonte
.replace
apenas substitui a primeira instância do caractere correspondente. Só é possível substituir todas as instâncias por//g
. O off trade desempenho poderia ser argumentado ser pior se substituindo várias instânciasname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
ou piorwhile (name.includes(' ')) { name = name.replace(' ', '_') }
Você usaria o
replace
método:O primeiro argumento é o que você está procurando, obviamente. Também pode aceitar expressões regulares.
Lembre-se de que ele não altera a string original. Ele retorna apenas o novo valor.
fonte
Mais simplesmente:
Substitui todos os espaços por '_'!
fonte
.replace(/\\x3B/g,';')
Todos esses métodos não modificam o valor original, retornam novas strings.
Substitui o 1º espaço por _
Substitui todos os espaços por _ usando regex. Se você precisar usar o regex, recomendo testá-lo com https://regex101.com/
Substitui todos os espaços por _ sem regex . Maneira funcional.
fonte
Você deve escrever algo assim:
fonte
O código fornecido por outras pessoas substitui apenas uma ocorrência, enquanto o uso de expressões regulares substitui todas (como o @sorgit disse). Para substituir todo o "querer" por "não querer", use este código:
A variável "new_text" resultará em "este é um texto de exemplo que eu não quero substituir".
Para obter um guia rápido sobre expressões regulares, acesse aqui:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
Para saber mais
str.replace()
, acesse aqui:https://developer.mozilla.org/ pt-br / docs / JavaScript / Reference / Global_Objects / String / replace
Boa sorte!
fonte
Não necessariamente. veja a resposta de Hans Kesting:
fonte
hm .. Você verificou replace ()?
Seu código ficará assim
fonte
fonte
Em JavaScript, você chama o
replace
método no objeto String, por exemplo"this is some sample text that i want to replace".replace("want", "dont want")
, que retornará a string substituída.fonte
JavaScript possui o
replace()
método String objeto para substituir substrings. Este método pode ter dois argumentos. O primeiro argumento pode ser uma sequência de caracteres ou um padrão de expressão regular (objeto regExp) e o segundo argumento pode ser uma sequência de caracteres ou uma função. Um exemplo dereplace()
método com os dois argumentos de sequência é mostrado abaixo.Observe que, se o primeiro argumento for a cadeia, apenas a primeira ocorrência da substring será substituída como no exemplo acima. Para substituir todas as ocorrências da substring, é necessário fornecer uma expressão regular com um
g
sinalizador (global). Se você não fornecer o sinalizador global, apenas a primeira ocorrência da substring será substituída, mesmo se você fornecer a expressão regular como o primeiro argumento. Então, vamos substituir todas as ocorrênciasone
no exemplo acima.Observe que você não quebra o padrão de expressão regular entre aspas, o que tornará uma sequência não um objeto regExp. Para fazer uma substituição sem distinção entre maiúsculas e minúsculas, é necessário fornecer sinalizador adicional
i
que torne o padrão sem distinção entre maiúsculas e minúsculas. Nesse caso, a expressão regular acima será/one/gi
. Observe ai
bandeira adicionada aqui.Se o segundo argumento tiver uma função e se houver uma correspondência, a função será passada com três argumentos. Os argumentos que a função obtém são a correspondência, a posição da correspondência e o texto original. Você precisa retornar com o que essa correspondência deve ser substituída. Por exemplo,
Você pode ter mais controle sobre o texto de substituição usando uma função como o segundo argumento.
fonte
Você pode usar
E para alterar vários valores em uma sequência de uma vez, por exemplo, altere # para a sequência ve _ para a sequência w:
fonte
Se você realmente quer um equivalente ao PHP,
str_replace
pode usar o Locutus . A versão do PHPstr_replace
maisString.prototype.replace
suportada do que o JavaScript suporta. Por exemplo, tags:ou matriz
Além disso, isso não usa regex, mas sim para loops. Se você não deseja usar regex, mas deseja substituir uma string simples, pode usar algo parecido com isto (baseado no Locutus)
para obter mais informações, consulte o código-fonte https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
fonte
Já existem várias respostas usando str.replace () (o que é justo o suficiente para esta pergunta),
regex
mas você pode usar a combinação de str.split () e join () juntos, o que é mais rápido questr.replace()
eregex
.Abaixo está um exemplo de trabalho:
fonte
Você tem as seguintes opções:
Mais informações -> aqui
fonte
Em Javascript, substitua a função disponível para substituir a sub-string de uma determinada string por uma nova. Usar:
Você pode até usar expressão regular com esta função. Por exemplo, se desejar substituir todas as ocorrências de
,
por.
.Aqui, o
g
modificador usado para corresponder globalmente a todas as correspondências disponíveis.fonte
Método para
replace substring in a sentence
usar o React:RunMethodHere
fonte
Se você não quiser usar regex, poderá usar esta função que substituirá tudo em uma string
Código fonte:
Como usar:
fonte
O uso do
String.prototype.replace
primeiro argumento JS deve ser o padrão Regex ou String e o segundo argumento deve ser uma String ou função.str.replace(regexp|substr, newSubStr|function);
Ex:
var str = 'this is some sample text that i want to replace'; var newstr = str.replace(/want/i, "dont't want"); document.write(newstr); // this is some sample text that i don't want to replace
fonte
Você não precisa de bibliotecas adicionais.
fonte
Adicionado um método
replace_in_javascript
que atenda às suas necessidades. Também descobriu que você está escrevendo uma string"new_text"
nadocument.write()
qual deveria se referir a uma variávelnew_text
.fonte