Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace single backslash "\" with double backslashes "\\"

I have string with file path. I want to replace all single backslashes ("\") with double backslashes ("\\").

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

Console showed me it.

   c:asdlkjklsdfjkl

I found something like this, unfortunately it didn't work. Replacing \ with \\

like image 922
PilgrimViis Avatar asked Apr 22 '13 09:04

PilgrimViis


3 Answers

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

This will alert you c:asdlkjklsdfjkl because '\' is an escape character which will not be considered.

To have a backslash in your string , you should do something like this..

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

This will alert you c:\asd\flkj\klsd\ffjkl

JS Fiddle

Learn about Escape sequences here

If you want your string to have '\' by default , you should escape it .. Use escape() function

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

JS Fiddle

like image 83
Prasath K Avatar answered Oct 12 '22 23:10

Prasath K


Try:

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

Personally, as I am not so expert in reg exps, I tend to avoid them when dealing with non-alphanumeric characters, both due to readability and to avoid weird mistake.

like image 38
LittleSweetSeas Avatar answered Oct 13 '22 01:10

LittleSweetSeas


You have several problems in your code.

  1. To get a \ in your string variable you need to escape it.

    When you create a string like this: replaceableString = "c:\asd\flkj\klsd\ffjkl"; characters with a \ before are treated as escape sequences. So during the string creation, it tries to interpret the escape sequence \a, since this is not valid it stores the a to the string. E.g. \n would have been interpreted as newline.

  2. I assume the @ is coming from a .net example. Javascript does not know "raw" strings.

  3. remove the quotes from your regex.

This would do what you want:

var string = "c:\\asd\\flkj\\klsd\\ffjkl";
var regex = /\\/g;
var FilePath = string.replace(regex, "\\\\");
like image 41
stema Avatar answered Oct 13 '22 01:10

stema