用双反斜杠“\\”替换单反斜杠“\”

时间:2013-04-22 09:50:10

标签: javascript regex replace

我有文件路径的字符串。我想用双反斜杠(“\\”)替换所有单反斜杠(“\”)。

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

控制台告诉了我。

   c:asdlkjklsdfjkl

我发现这样的事情,不幸的是它没有用。 Replacing \ with \\

10 个答案:

答案 0 :(得分:9)

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

这会提醒您c:asdlkjklsdfjkl,因为'\'是一个不会被考虑的转义字符。

要在字符串中加一个反斜杠,你应该这样做..

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

这会提醒您c:\asd\flkj\klsd\ffjkl

JS Fiddle

Learn about Escape sequences here

如果您希望字符串默认为“\”,则应将其转义..使用escape()函数

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

JS Fiddle

答案 1 :(得分:6)

尝试:

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

就个人而言,由于我不熟悉reg exps,因此在处理非字母数字字符时,我倾向于避免使用它们,这既是因为可读性,也是为了避免奇怪的错误。

答案 2 :(得分:6)

您的代码中存在多个问题。

  1. 要在字符串变量中获取\,您需要将其转义。

    创建这样的字符串时:replaceableString = "c:\asd\flkj\klsd\ffjkl";之前带有\的字符被视为转义序列。因此在字符串创建期间,它会尝试解释转义序列\a,因为它无效,它会将a存储到字符串中。例如。 \n会被解释为换行符。

  2. 我假设@来自.net示例。 Javascript不知道“原始”字符串。

  3. 从正则表达式中删除引号。

  4. 这可以做你想要的:

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

答案 3 :(得分:4)

\是一个转义字符。因此replaceableString不包含任何反斜杠。

要解决此问题,您应该声明如下字符串:

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

答案 4 :(得分:1)

首先编码字符串

然后用%5C%5C替换所有出现的%5C

最后解码字符串

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

答案 5 :(得分:1)

这是答案:

用于将单个反斜杠替换为单个反斜杠

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

用于将双反斜杠替换为单反斜杠

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

答案 6 :(得分:0)

如果您无法控制字符串的内容,而您正在尝试查找反斜杠,并且它包含SINGLE \值(例如,变量myPath包含C:\Some\Folder\file.jpg),那么您实际上可以参考JavaScript中的单个反斜杠为String.fromCharCode(92)

所以要在上面的文件路径示例中获取文件名。

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

答案 7 :(得分:0)

如果是字符串匹配,最好使用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;
}
}

答案 8 :(得分:0)

如果字符串中有单个反斜杠,则javascript替换方法不允许我替换单个反斜杠。

相反,我必须使用split方法,它返回一个拆分字符串数组,然后连接不带反斜杠的字符串(或者你想要替换它的任何东西)

解决方案(用下划线替换反斜杠):

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

答案 9 :(得分:-2)

在为变量赋值之前,您需要通过 String.raw 传递字符串的值。

var replaceableString = String.raw`c:\asd\flkj\klsd\ffjkl`.replace(/\\/g,"\\\\");
console.log(replaceableString)