这是我的字符串:
var str = "This is my \string";
这是我的代码:
var replaced = str.replace("/\\/", "\\\\");
我无法得到我的输出:
"This is my \\string"
我已经尝试了我能想到的正则表达式和替换值的所有组合。
感谢任何帮助!
答案 0 :(得分:42)
多年来一直难以理解,并且所有答案一直坚持要求源字符串已经在其中转义了反斜杠......但情况并非总是如此。
这样做..
var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));
答案 1 :(得分:32)
该字符串不包含反斜杠,它包含\s
转义序列。
var str = "This is my \\string";
如果你想要一个正则表达式,你应该有一个正则表达式,而不是一个字符串。
var replaced = str.replace(/\\/, "\\\\");
答案 2 :(得分:8)
问题是第一行中的\甚至无法识别。它认为反斜杠将标记一个转义序列,但\ s不是转义字符,所以它被忽略了。你的var str被解释为“这是我的字符串”。试试str.indexOf("\\")
- 你会发现它是-1,因为根本没有反斜杠。如果您控制str的内容,请执行David所说的内容 - 添加另一个\以逃避第一个。
答案 3 :(得分:3)
var a = String.raw`This is my \string`.replace(/\\/g,"\\\\");
console.log(a);
结果:
This is my \\string
答案 4 :(得分:2)
使用此
str.replace(/(\s)/g,function($0){return $0==' '?' ':'\\s'})
或
str.replace(/ /g,'something').replace(/\s/g,'\\s').replace(/something/g,' ');
'某事'它可能是不在字符串
中的字符组合var str=' \s';
str.replace(/\s/g,'\\s');
// return '\\s\\s'
str.replace(/ /g,'SpAcE').replace(/\s/g,'\\s').replace(/SpAcE/g,' ');
// return ' \\s'
答案 5 :(得分:1)
如果您有多个实例或反斜杠:
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
[0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
[0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
[0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
[0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
[0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
[0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]
答案 6 :(得分:0)
我没有尝试过,但以下应该工作
var replaced = str.replace((new RegExp("\s"),"\\s");
基本上你不想替换“\”,你想要替换“\ s”转义序列所代表的字符。
不幸的是,您需要为字母表中的每个字母,每个数字,符号等执行此操作以覆盖所有基础
答案 7 :(得分:-1)
如果用例是替换函数的toString中的某些值,然后将字符串转换回有效函数。
var exFnStr1 = exFn.toString();
var exFnStr = "";
var quoteStarted = false;
for(i = 0; i < exFnStr1.length; i++) {
var iChar = exFnStr1.charAt(i);
var oChar = exFnStr1.charAt(i);
var currentCharCode = exFnStr1.charCodeAt(i);
if(quoteStarted) {
if(currentCharCode === 9) oChar = "tabChar";
if(currentCharCode === 10) oChar = "newlineChar";
}
//console.log(iChar+"->"+currentCharCode+"->"+oChar)
exFnStr += oChar;
if(currentCharCode === 34) {
if(quoteStarted) quoteStarted = false;
else quoteStarted = true;
}
}
console.log(exFnStr);
//TODO - replace values in the string
exFn = new Function('return ' + exFnStr)();