JavaScript.remplacer seulement remplace le premier Match

var textTitle = "this is a test"
var result = textTitle.replace(' ', '%20');

Mais les fonctions de remplacement s'arrêtent à la première instance du "" et j'obtiens le

Résultat : "this%20is a test"

Toutes les idées sur où je vais mal im sûr que c'est une solution simple.

88
demandé sur Nick Craver 2010-07-09 21:01:27

6 réponses

Vous avez besoin d'un /g là-bas, comme ceci:

var textTitle = "this is a test";
var result = textTitle.replace(/ /g, '%20');

console.log(result);

Vous pouvez jouer avec ici, le comportement par défaut .replace() est de remplacer uniquement la première correspondance, le modificateur /g (global) lui indique de remplacer toutes les occurrences.

161
répondu Nick Craver 2018-05-25 11:21:14
textTitle.replace(/ /g, '%20');
7
répondu Nikita Rybak 2010-07-09 17:03:10

Essayez d'utiliser une expression rationnelle au lieu d'une chaîne pour le premier argument.

"this is a test".replace(/ /g,'%20') // #=> "ce%20is%20a % 20test"

4
répondu James Holmes 2010-07-09 17:03:56

De w3schools

La méthode replace() recherche pour un match entre une sous-chaîne (ou expression régulière) et une chaîne, et remplace la sous-chaîne correspondante avec un nouveau sous-chaîne

Serait préférable d'utiliser une expression régulière ici alors:

textTitle.replace(/ /g, '%20');
2
répondu Jhonny D. Cano -Leftware- 2010-07-09 17:03:54

Pour cela, vous neet utiliser le drapeau g de regex.... Comme ceci:

var new_string=old_string.replace( / (regex) /g,  replacement_text);

Que sh

1
répondu Subham Debnath 2018-03-12 11:02:55

Essayer à l'aide de replaceWith() ou replaceAll()

Http://api.jquery.com/replaceAll/

-4
répondu amfeng 2010-07-09 17:03:10