2010-12-01 9 views
3

Ich habe ein Problem versucht, den umgekehrten Schrägstrich aus einer Zeichenfolge zu ersetzen:Jquery- umgekehrter Schrägstrich

var g = myReadString; 
g = g.replace("\", "\\\\"); 

es ist ein Fehler, der nicht erfassten Charakters.

Wie könnte eine einfache \ mit vier \\\\ ersetzt werden?

Ich würde mich über jede Hilfe freuen, danke. Pandy

Antwort

7

Die \‍ ist der Beginn einer Escape-Sequenz. Wenn Sie wörtlich \‍ schreiben möchten, müssen Sie \\ schreiben, das ist auch eine Escape-Sequenz und wird als eine einzige \‍ interpretiert werden. Also, wenn Sie ein \‍ von vier \\\\ ersetzen möchten, müssen Sie dies schreiben:

g.replace("\\", "\\\\\\\\") 

Aber dies wird das erste Vorkommen eines einzelnen \‍ nur ersetzen. Um eine globale zu tun ersetzen Sie einen regulären Ausdruck mit dem globalen Spiel Modifikator verwenden müssen:

g.replace(/\\/g, "\\\\\\\\") 
+0

Ich denke, dass OP tatsächlich einen einzelnen Backslash mit * vier * wörtlichen Schrägstrichen ersetzen will. – jensgram

+0

@jensgram: Ich denke du hast Recht. – Gumbo

0
g = g.replace(/\\/g, "\\\\"); 

Ich denke, das ist, was Sie suchen. Lass es mich wissen, wenn nicht.

+0

Hallo mein Freund, es funktioniert nicht. Es ersetzt das Zeichen nicht. Zum Beispiel würde ich wollen: IN: "myvalue \ assa" (1 Backslash) OUT: "myvalue \\\\ assa" –

+0

@ Samuel Beckett In diesem Fall müssen Sie eigentlich mit acht (!) Backslashes ersetzen (dh , vier Backslashes entkamen). – jensgram

0

Der Backslash dient auch als flüchtiges Zeichen. Sie können eine Liste der Zeichen auf dieser Seite finden ... http://www.c-point.com/javascript_tutorial/special_characters.htm

Um nach einem Backslash zu suchen oder ihn zu ersetzen, müssen Sie den Backslash also umgehen. Ich habe gerade Ihren Code ausgeführt, und es funktioniert nicht, da der Backslash dem ersten Zitat entgeht. Was genau versuchst du zu tun? Wenn Sie jeden einzelnen Backslash durch ein Double ersetzen möchten, benötigen Sie etwas Ähnliches.

var g = myReadString; 
g = g.replace("\\", "\\\\"); 

Hoffe, dass hilft!

+0

Danke !, die Lösung, die funktioniert, ist: g = g.replace ("\\", "\\\\\\\"); –

+0

Vielen Dank für Ihre Hilfe! –

+0

Kein Problem! Froh, dass ich Helfen kann. – mikesir87

0

In allgemein stellen Sie sicher, immer korrekt zu entkommen.

In Ihrem ersten Argument für replace() beabsichtigen Sie eine Zeichenfolge \ enthält, passieren aber es endet als ", (quote-Komma-Raum) nach oben! Dies liegt daran, Sie tatsächlich das „Schließen“ Zitat auf der Saite zu entkommen:

g = g.replace("\", "\\\\"); 
      ^^
       s e 
       t n 
       a d 
       r 
       t 

nun das erste Argument ist der String quote-Komma-Raum. Der Rest gibt einen Syntaxfehler!

Was man will:

g = g.replace("\\", "\\\\\\\\"); 
      ^^^ ^
       s e s  e 
       t n t  n 
       a d a  d 
       r  r 
       t  t 

Erstes Argument: Die Zeichenfolge \
Zweites Argument: Der String \\\\

Verwandte Themen