web-dev-qa-db-fra.com

Remplacer la barre oblique simple "\" par une double barre oblique inversée "\\"

J'ai une chaîne avec le chemin du fichier. Je souhaite remplacer toutes les barres obliques inverses simples ("\") par des doubles barres obliques inverses ("\\").

   var replaceableString = "c:\asd\flkj\klsd\ffjkl";
   var part = /@"\\"/g;
   var filePath = replaceableString .replace(part, /@"\\"/);
   console.log(filePath);

La console me l'a montré.

   c:asdlkjklsdfjkl

J'ai trouvé quelque chose comme ça, malheureusement ça n'a pas marché . Remplacement de\par \\

16
PilgrimViis
var replaceableString = "c:\asd\flkj\klsd\ffjkl";
alert(replaceableString);

Cela vous alertera c:asdlkjklsdfjkl car '\' est un caractère d'échappement qui ne sera pas pris en compte.

Pour avoir une barre oblique inverse dans votre chaîne, vous devriez faire quelque chose comme ça.

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
alert(replaceableString);

Cela vous alertera c:\asd\flkj\klsd\ffjkl

JS Fiddle

En savoir plus sur les séquences d'échappement ici

Si vous voulez que votre chaîne ait '\' par défaut, vous devez l'échapper. Utilisez escape () function

var replaceableString = escape("c:\asd\flkj\klsd\ffjkl");
alert(replaceableString);

JS Fiddle

7
Prasath K

Essayer:

   var parts = replaceableString.split('\\');
   var output = parts.join('\\\\');

Personnellement, comme je ne suis pas un expert des expressions régulières, j’ai tendance à les éviter lorsqu’il s’agit de caractères non alphanumériques, à la fois pour des raisons de lisibilité et pour éviter des erreurs étranges.

6
LittleSweetSeas

Vous avez plusieurs problèmes dans votre code.

  1. Pour obtenir un \ dans votre variable chaîne, vous devez l’échapper.

    Lorsque vous créez une chaîne comme celle-ci: replaceableString = "c:\asd\flkj\klsd\ffjkl";, les caractères précédés de \ sont traités comme des séquences d'échappement. Ainsi, lors de la création de la chaîne, il essaie d'interpréter la séquence d'échappement \a, car elle n'est pas valide, il enregistre la a dans la chaîne. Par exemple. \n aurait été interprété comme une nouvelle ligne.

  2. Je suppose que le @ provient d'un exemple .net. Javascript ne connaît pas les chaînes "brutes".

  3. supprimez les guillemets de votre regex.

Cela ferait ce que tu veux:

var string = "c:\\asd\\flkj\\klsd\\ffjkl";
var regex = /\\/g;
var FilePath = string.replace(regex, "\\\\");
6
stema

\ est un caractère d'échappement. Par conséquent, replaceableString ne contient pas de barres obliques inverses.

Pour résoudre ce problème, vous devez déclarer la chaîne comme ceci:

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl";
4
Leon Lucardie

Voici la réponse:

Pour remplacer single backslash par single forward slash

var stringReplaced = String.raw`c:\asd\flkj\klsd\ffjkl`.split('\\').join('/')
console.log(stringReplaced);

Pour remplacer double barre oblique inversée par simple barre oblique

var stringReplaced = String.raw`c:\\asd\\flkj\\klsd\\ffjkl`.split('\\\\').join('/')
console.log(stringReplaced);
0

Dans le cas d'une seule barre oblique inversée dans la chaîne, la méthode de remplacement javascript ne me permettait pas de remplacer la seule barre oblique inversée. 

Au lieu de cela, j'ai dû utiliser la méthode split qui renvoie un tableau des chaînes scindées, puis concaténer les chaînes sans la barre oblique inverse (ou ce que vous souhaitez remplacer)

Solution (barre oblique inverse remplacée par un trait de soulignement):

var splitText = stringWithBackslash.split('\\');
var updatedText = splitText[0] + '_' + splitText[1];
0
Geoff

En cas de correspondance de chaîne, il est préférable d'utiliser encodeURIComponent, decodeURIComponent.

match(encodeURIComponent(inputString));

function match(input)
{

for(i=0; i<arr.length; i++)
{
if(arr[i] == decodeURIComponent(input))
return true;
else return false;
}
}

Si vous ne contrôlez pas le contenu de la chaîne dans laquelle vous essayez de trouver des barres obliques inverses et que celle-ci contient SINGLE \ valeurs (par exemple, la variable myPath contient C:\Some\Folder\file.jpg), vous pouvez référencer la seule barre oblique inverse en JavaScript sous la forme String.fromCharCode(92)

Donc, pour obtenir le nom du fichier dans mon exemple de chemin de fichier ci-dessus. 

var justTheName = myPath.split(String.fromCharCode(92)).pop();
0
thegajman

D'abord encoder la chaîne

puis remplacez toutes les occurrences de% 5C par% 5C% 5C

À la fin décoder la chaîne 

var result = encodeURI(input);
result=decodeURI(result.replace(/%5C/g,"%5C%5C"));
0
omkar1707