更换单反斜线“\\”双反斜线“\\\\”(Replace single backslash “\\”

2019-08-31 18:08发布

我有字符串的文件路径。 我想用双反斜杠(“\\”),以取代所有的单反斜线(“\”)。

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

控制台给我吧。

   c:asdlkjklsdfjkl

我发现这样的事情,遗憾的是它没有工作。 更换\以\\

Answer 1:

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小提琴

了解转义序列这里

如果你希望你的字符串,默认情况下有“\”,你应该逃避它..使用逃生()函数

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

JS小提琴



Answer 2:

你在你的代码的几个问题。

  1. 要获得\在字符串变量,你需要逃避它。

    当你创建一个这样的字符串: replaceableString = "c:\asd\flkj\klsd\ffjkl"; 用字符\之前都被视为转义序列。 因此字符串创建过程中,它试图解释转义序列\a ,因为这是无效它存储的a字符串。 例如, \n将被解释为换行符。

  2. 我假设@从.NET示例来了。 JavaScript不知道“原始”的字符串。

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

这将做你想要的:

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


Answer 3:

尝试:

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

就个人而言,我不是那么到Reg EXPS专家,我倾向于避免它们与非字母数字字符打交道时,既由于可读性和避免怪异的错误。



Answer 4:

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

为了解决这个问题,你应该申报这样的字符串:

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


Answer 5:

第一串编码

然后%5C%5C更换%5C的所有出现

在结束解码串

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


Answer 6:

下面是答案:

对于一个正斜杠代替单反斜线

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);


Answer 7:

如果你有以上的字符串你正在努力寻找在反斜线内容无法控制,它包含单\值(如变量mypath中包含C:\Some\Folder\file.jpg ),那么你可以实际引用单在JavaScript反斜线作为String.fromCharCode(92)

所以,在我的文件路径例如获得上述文件名。

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


Answer 8:

在字符串匹配的情况下,最好使用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;
}
}


Answer 9:

在字符串中的一个反斜杠的情况下,JavaScript的替代方法并没有让我来代替单反斜线。

相反,我不得不使用它返回分割字符串数组的拆分方法,然后拼接没有反斜杠的字符串(或任何你想用来替换)

溶液(替换下划线反斜杠):

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


文章来源: Replace single backslash “\\” with double backslashes “\\\\”