我有文件路径的字符串。我想用双反斜杠(“\\”)替换所有单反斜杠(“\”)。
var replaceableString = "c:\asd\flkj\klsd\ffjkl";
var part = /@"\\"/g;
var filePath = replaceableString .replace(part, /@"\\"/);
console.log(filePath);
控制台告诉了我。
c:asdlkjklsdfjkl
我发现这样的事情,不幸的是它没有用。 Replacing \ with \\
答案 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
Learn about Escape sequences here
如果您希望字符串默认为“\”,则应将其转义..使用escape()函数
var replaceableString = escape("c:\asd\flkj\klsd\ffjkl");
alert(replaceableString);
答案 1 :(得分:6)
尝试:
var parts = replaceableString.split('\\');
var output = parts.join('\\\\');
就个人而言,由于我不熟悉reg exps,因此在处理非字母数字字符时,我倾向于避免使用它们,这既是因为可读性,也是为了避免奇怪的错误。
答案 2 :(得分:6)
您的代码中存在多个问题。
要在字符串变量中获取\
,您需要将其转义。
创建这样的字符串时:replaceableString = "c:\asd\flkj\klsd\ffjkl";
之前带有\
的字符被视为转义序列。因此在字符串创建期间,它会尝试解释转义序列\a
,因为它无效,它会将a
存储到字符串中。例如。 \n
会被解释为换行符。
我假设@
来自.net示例。 Javascript不知道“原始”字符串。
从正则表达式中删除引号。
这可以做你想要的:
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)