Javascript和反斜杠替换

时间:2010-03-19 17:27:21

标签: javascript replace backslash

这是我的字符串:

var str = "This is my \string";

这是我的代码:

var replaced = str.replace("/\\/", "\\\\");

我无法得到我的输出:

"This is my \\string"

我已经尝试了我能想到的正则表达式和替换值的所有组合。

感谢任何帮助!

8 个答案:

答案 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)();