voici ma chaîne:
var str = "This is my \string";
Voici mon code:
var replaced = str.replace("/\\/", "\\\\");
Je ne peux pas obtenir que ma sortie soit:
"This is my \\string"
J'ai essayé toutes les combinaisons auxquelles je peux penser pour l'expression régulière et la valeur de remplacement.
Toute aide est appréciée!
Vous avez été bloqué par cela pendant des siècles et toutes les réponses ont continué à insister sur le fait que la chaîne source doit déjà avoir échappé des barres obliques inverses ... ce qui n'est pas toujours le cas.
Faites ceci ..
var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));
La chaîne ne contient pas de barre oblique inverse, elle contient le \s
séquence d'échappement.
var str = "This is my \\string";
Et si vous voulez une expression régulière, vous devez avoir une expression régulière, pas une chaîne.
var replaced = str.replace(/\\/, "\\\\");
Le problème est que le\dans votre première ligne n'est même pas reconnu. Il pense que la barre oblique inverse marquera une séquence d'échappement, mais\s n'est pas un caractère d'échappement, donc il est ignoré. Votre var str est interprétée comme "c'est ma chaîne". Essayez str.indexOf("\\")
- vous trouverez que c'est -1, car il n'y a aucune barre oblique inverse. Si vous contrôlez le contenu de str, faites ce que dit David - ajoutez un autre\pour échapper au premier.
Utilisez ceci
str.replace(/(\s)/g,function($0){return $0==' '?' ':'\\s'})
ou
str.replace(/ /g,'something').replace(/\s/g,'\\s').replace(/something/g,' ');
'quelque chose' peut être une combinaison de caractères qui n'est pas dans la chaîne
var str=' \s';
str.replace(/\s/g,'\\s');
// return '\\s\\s'
str.replace(/ /g,'SpAcE').replace(/\s/g,'\\s').replace(/SpAcE/g,' ');
// return ' \\s'
Dans le cas où vous avez plusieurs instances ou la barre oblique inverse:
str.split(String.fromCharCode(92)).join(String.fromCharCode(92,92))
Je n'ai pas essayé cela, mais ce qui suit devrait fonctionner
var replaced = str.replace((new RegExp("\s"),"\\s");
Essentiellement, vous ne voulez pas remplacer "\", vous voulez remplacer le caractère représenté par la séquence d'échappement "\ s".
Malheureusement, vous devrez le faire pour chaque lettre de l'alphabet, chaque chiffre, symbole, etc. afin de couvrir toutes les bases