164 votes

JavaScript .replace ne remplace que 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 occurrence du " " et j'obtiens le message suivant

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

Si vous avez des idées sur la façon dont je me trompe, je suis sûr que c'est une solution simple.

5 votes

Dans ce cas, replace( ) est une méthode JavaScript String. Aucun jQuery n'est impliqué.

10 votes

+1 pour ne pas utiliser jQuery

272voto

Nick Craver Points 313913

Vous avez besoin d'un /g là-dessus, comme ça :

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

console.log(result);

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

3 votes

Il a fait exactement ce dont il avait besoin. Merci.

0 votes

Pour remplacer un tuyau, voir este .

9voto

Nikita Rybak Points 36641
textTitle.replace(/ /g, '%20');

4voto

32bitkid Points 11851

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

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

3voto

De w3schools

La méthode replace() recherche un match entre une sous-chaîne (ou une expression régulière) et une chaîne de caractères, et remplace la sous-chaîne trouvée par une nouvelle sous-chaîne

Il serait préférable d'utiliser une regex ici alors :

textTitle.replace(/ /g, '%20');

0 votes

Merci pour la référence, ce n'est pas un exemple facile à suivre avec l'espace blanc étant la valeur de remplacement (par exemple / /g).

-7voto

amfeng Points 801

Essayez d'utiliser replaceWith() o replaceAll()

http://api.jquery.com/replaceAll/

1 votes

N'a-t-il pas demandé une version JQuery ? Je ne vois pas de .replace() dans l'API JQuery - c'est du Javascript pur.

2 votes

Nick, tu es jaloux ou quoi ? :)

4 votes

@Nikita - Non... ce n'est pas du tout pertinent pour la question. Le PO se trompe en incluant jQuery, il s'agit de vanilla JavaScript, qui a... rien à faire avec jQuery ou ses méthodes de remplacement...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X