Je souhaite utiliser str_replace
ou une alternative similaire pour remplacer du texte en 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");
devrait donner
this is some sample text that i dont want to replace
Si vous envisagez d'utiliser une expression régulière, quelles sont les implications sur les performances par rapport aux méthodes de remplacement intégrées.
str_replace
accepte également deux tableaux de la même longueur, où chaque chaîne du premier tableau est remplacée par la chaîne du deuxième tableau au même index. Veuillez consulter stackoverflow.com/a/5069776/296430 pour la seule fonction correcte que j'ai trouvée jusqu'à présent qui imite ce comportement exact en javascript.Réponses:
L'utilisation de regex pour le remplacement de chaîne est beaucoup plus lente que celle d'un remplacement de chaîne.
Comme démontré sur JSPerf , vous pouvez avoir différents niveaux d'efficacité pour créer une expression régulière, mais tous sont nettement plus lents qu'un simple remplacement de chaîne. L'expression régulière est plus lente car :
Pour un test simple sur la page JS perf, j'ai documenté certains des résultats:
Les résultats pour Chrome 68 sont les suivants:
Par souci d'exhaustivité de cette réponse (empruntée aux commentaires), il convient de mentionner que
.replace
ne remplace que la première instance du caractère correspondant. Il est uniquement possible de remplacer toutes les instances par//g
. Le compromis entre les performances et l'élégance du code pourrait être considéré comme pire si le remplacement de plusieurs instancesname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
ou pirewhile (name.includes(' ')) { name = name.replace(' ', '_') }
la source
.replace
ne remplace que la première instance du caractère correspondant. Il est uniquement possible de remplacer toutes les instances par//g
. Le compromis de performance pourrait être considéré comme pire si le remplacement de plusieurs instancesname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
ou pirewhile (name.includes(' ')) { name = name.replace(' ', '_') }
Vous utiliseriez la
replace
méthode:Le premier argument est ce que vous recherchez, évidemment. Il peut également accepter des expressions régulières.
N'oubliez pas que cela ne change pas la chaîne d'origine. Il ne renvoie que la nouvelle valeur.
la source
Plus simplement:
Remplace tous les espaces par '_'!
la source
.replace(/\\x3B/g,';')
Toutes ces méthodes ne modifient pas la valeur d'origine, retourne de nouvelles chaînes.
Remplace le 1er espace par _
Remplace tous les espaces par _ à l'aide de regex. Si vous avez besoin d'utiliser regex, je vous recommande de le tester avec https://regex101.com/
Remplace tous les espaces par _ sans regex . Manière fonctionnelle.
la source
Vous devriez écrire quelque chose comme ça:
la source
Le code que les autres vous donnent ne remplace qu'une seule occurrence, tandis que l'utilisation d'expressions régulières les remplace toutes (comme @sorgit l'a dit). Pour remplacer tous les "veulent" par "ne veulent pas", utilisez ce code:
La variable "new_text" se traduira par "ceci est un exemple de texte que je ne veux pas remplacer".
Pour obtenir un guide rapide sur les expressions régulières, allez ici:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
Pour en savoir plus
str.replace()
, allez ici:https://developer.mozilla.org/ fr-FR / docs / JavaScript / Reference / Global_Objects / String / replace
Bonne chance!
la source
Pas nécessairement. voir la réponse de Hans Kesting:
la source
hm .. Avez-vous coché replace ()?
Votre code ressemblera à ceci
la source
la source
En JavaScript, vous appelez la
replace
méthode sur l'objet String, par exemple"this is some sample text that i want to replace".replace("want", "dont want")
, qui retournera la chaîne remplacée.la source
JavaScript a une
replace()
méthode d'objet String pour remplacer les sous-chaînes. Cette méthode peut avoir deux arguments. Le premier argument peut être une chaîne ou un modèle d'expression régulière (objet regExp) et le second argument peut être une chaîne ou une fonction. Un exemple dereplace()
méthode ayant les deux arguments de chaîne est présenté ci-dessous.Notez que si le premier argument est la chaîne, seule la première occurrence de la sous-chaîne est remplacée comme dans l'exemple ci-dessus. Pour remplacer toutes les occurrences de la sous-chaîne, vous devez fournir une expression régulière avec un
g
indicateur (global). Si vous ne fournissez pas l'indicateur global, seule la première occurrence de la sous-chaîne sera remplacée même si vous fournissez l'expression régulière comme premier argument. Remplaçons donc toutes les occurrences deone
dans l'exemple ci-dessus.Notez que vous n'entourez pas le modèle d'expression régulière de guillemets, ce qui en fera une chaîne et non un objet regExp. Pour effectuer un remplacement insensible à la casse, vous devez fournir un indicateur supplémentaire
i
qui rend le modèle insensible à la casse. Dans ce cas, l'expression régulière ci-dessus sera/one/gi
. Notez lei
drapeau ajouté ici.Si le deuxième argument a une fonction et s'il y a une correspondance, la fonction est passée avec trois arguments. Les arguments obtenus par la fonction sont la correspondance, la position de la correspondance et le texte d'origine. Vous devez renvoyer par quoi cette correspondance doit être remplacée. Par exemple,
Vous pouvez avoir plus de contrôle sur le texte de remplacement en utilisant une fonction comme deuxième argument.
la source
Vous pouvez utiliser
Et pour changer plusieurs valeurs dans une chaîne à la fois, par exemple pour changer # en chaîne v et _ en chaîne w:
la source
Si vous voulez vraiment un équivalent de PHP,
str_replace
vous pouvez utiliser Locutus . La version de PHP destr_replace
support plus d'options que ce que le JavaScriptString.prototype.replace
prend en charge. Par exemple, les balises:ou tableau
De plus, cela n'utilise pas regex à la place, il utilise pour les boucles. Si vous ne voulez pas utiliser de regex mais que vous voulez un simple remplacement de chaîne, vous pouvez utiliser quelque chose comme ça (basé sur Locutus)
pour plus d'informations, voir le code source https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
la source
Il y a déjà plusieurs réponses en utilisant str.replace () (ce qui est assez juste pour cette question) et
regex
mais vous pouvez utiliser une combinaison de str.split () et join () ensemble, ce qui est plus rapide questr.replace()
etregex
.Voici un exemple de travail:
la source
Vous avez les options suivantes:
Plus d'infos -> ici
la source
En Javascript, remplacez la fonction disponible pour remplacer la sous-chaîne de la chaîne donnée par une nouvelle. Utilisation:
Vous pouvez même utiliser une expression régulière avec cette fonction. Par exemple, si vous souhaitez remplacer toutes les occurrences de
,
par.
.Ici, le
g
modificateur est utilisé pour correspondre globalement à toutes les correspondances disponibles.la source
Méthode d'
replace substring in a sentence
utilisation de React:RunMethodHere
la source
Si vous ne voulez pas utiliser regex, vous pouvez utiliser cette fonction qui remplacera tout dans une chaîne
Code source:
Comment utiliser:
la source
Utiliser le
String.prototype.replace
premier argument JS doit être un modèle Regex ou une chaîne et le deuxième argument doit être une chaîne ou une fonction.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
la source
Vous n'avez pas besoin de bibliothèques supplémentaires.
la source
Ajout d'une méthode
replace_in_javascript
qui satisfera votre exigence. Nous avons également constaté que vous écrivez une chaîne"new_text"
dansdocument.write()
laquelle est censée faire référence à une variablenew_text
.la source