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 \\
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
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);
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.
Vous avez plusieurs problèmes dans votre code.
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.
Je suppose que le @
provient d'un exemple .net. Javascript ne connaît pas les chaînes "brutes".
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, "\\\\");
\ 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";
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);
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];
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();
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"));