165 votes

Comment remplacer globalement un slash avant dans une chaîne JavaScript ?

Comment remplacer globalement un slash avant dans une chaîne JavaScript ?

316voto

Seldaek Points 12311

Le texte suivant ferait l'affaire mais ne remplacerait qu'une seule occurrence :

"string".replace('/', 'ForwardSlash');

Pour un remplacement global, ou si vous préférez les expressions régulières, il suffit d'échapper la barre oblique :

"string".replace(/\//g, 'ForwardSlash');

4 votes

Le premier extrait ne fait pas de remplacement global. Je ne suis pas trop sûr de savoir comment faire un remplacement global de manière non-regex.

0 votes

Ah oui, je n'ai pas essayé avec plus qu'une barre oblique. Cela pourrait être fait avec "string".replace('/', 'ForwardSlash', 'g') mais c'est un argument non standard qui ne fonctionne que dans Firefox.

1 votes

"string".replace(/\//g, 'ForwardSlash'); fonctionne mais enlevez le /g de ceci et ça ne fonctionne pas.

32voto

BoltClock Points 249668

Utilisez un littéral regex avec l'option g et échappez la barre oblique avec une barre oblique inverse pour qu'elle n'entre pas en conflit avec les délimiteurs.

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);

7voto

PleaseStand Points 16718

Sans utiliser de regex (mais je ne le ferais que si la chaîne de recherche est saisie par l'utilisateur) :

var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'

5voto

Hemlock Points 3623

C'est ce que vous voulez ?

'string with / in it'.replace(/\//g, '\\');

5voto

Marty Points 21

Cela a fonctionné pour moi en transformant "//" en juste "/" .

str.replace(/\/\//g, '/');

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