web-dev-qa-db-de.com

Einzelne Backslash "\" durch doppelte Backslashes "\\" ersetzen

Ich habe String mit Dateipfad. Ich möchte alle einzelnen Backslashes ("\") durch doppelte Backslashes ("\\") ersetzen.

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

Console hat es mir gezeigt.

   c:asdlkjklsdfjkl

Ich habe etwas gefunden, leider hat es nicht funktioniert . Ersetzen von\durch \\

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

Dies wird Sie c:asdlkjklsdfjkl benachrichtigen, da '\' ein Escape-Zeichen ist, das nicht berücksichtigt wird.

Um einen Backslash in Ihrer Zeichenfolge zu haben, sollten Sie so etwas tun.

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

Dies wird Sie c:\asd\flkj\klsd\ffjkl benachrichtigen

JS Fiddle

Erfahren Sie hier mehr über Escape-Sequenzen

Wenn Sie möchten, dass Ihre Zeichenfolge standardmäßig '\' enthält, sollten Sie sie mit einem Escapezeichen versehen. Verwenden Sie die Funktion escape ()

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

JS Fiddle

7
Prasath K

Versuchen:

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

Ich persönlich neige dazu, da ich nicht so gut mit Reg Exps zu tun habe, diese zu vermeiden, wenn es sich um nicht alphanumerische Zeichen handelt.

6
LittleSweetSeas

Sie haben mehrere Probleme mit Ihrem Code.

  1. Um einen \ in Ihre String-Variable zu bekommen, müssen Sie ihn mit Escapezeichen versehen.

    Wenn Sie eine Zeichenfolge wie folgt erstellen: replaceableString = "c:\asd\flkj\klsd\ffjkl"; Zeichen mit einem \ vor werden als Escape-Sequenzen behandelt. Während der Erstellung des Strings versucht es daher, die Escape-Sequenz \a zu interpretieren, da dies nicht gültig ist, speichert es die Variable a im String. Z.B. \n wäre als Newline interpretiert worden.

  2. Ich gehe davon aus, dass @ von einem .net-Beispiel stammt. Javascript kennt keine "rohen" Zeichenketten.

  3. entfernen Sie die Anführungszeichen aus Ihrer Regex.

Das würde tun, was Sie wollen:

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

\ ist ein Escape-Zeichen. Daher enthält replaceableString keine Backslashes.

Um dies zu beheben, sollten Sie die Zeichenfolge folgendermaßen deklarieren:

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

Hier ist die Antwort:

Zum Ersetzen von einfachem Backslash mit einfachem Schrägstrich

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

Zum Ersetzen von doppeltem Backslash mit einfachem Schrägstrich

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

Im Fall eines einzelnen Backslashs in der Zeichenfolge konnte ich mit der Javascript-Ersetzungsmethode nicht den einzelnen Backslash ersetzen. 

Stattdessen musste ich die split-Methode verwenden, die ein Array der aufgeteilten Zeichenfolgen zurückgibt, und dann die Zeichenfolgen ohne den hinteren Schrägstrich verketten (oder was auch immer Sie mit ersetzen möchten)

Lösung (Backslash mit Unterstrich ersetzt):

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

Im Falle eines String-Abgleichs ist es besser, encodeURIComponent, decodeURIComponent, zu verwenden.

match(encodeURIComponent(inputString));

function match(input)
{

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

Wenn Sie keine Kontrolle über den Inhalt der Zeichenfolge haben, in der Sie Backslashes suchen, und die SINGLE \-Werte enthält (z. B. die Variable myPath enthält C:\Some\Folder\file.jpg), können Sie die einzelnen Backslashes in JavaScript tatsächlich als String.fromCharCode(92) referenzieren. 

So finden Sie den Dateinamen in meinem obigen Dateipfad. 

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

Kodiere zuerst den String

ersetzen Sie dann alle Vorkommen von% 5C durch% 5C% 5C

Am Ende dekodieren Sie den String 

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