var str='\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace('\E', '');
我得到这样的回报:
\E.1.2.154EcsE877_P9999_Adult{2}_02_05_2019_0329p.pdf
我需要替换字符串中的所有'\E'
,并期望像这样的(\\10.1.2.154\bcs\30877_P9999_Adult{2}_02_05_2019_0329p.pdf)
输出。请有一些人对此提出建议。我试图做几种方法来解决这个问题。没运气。当我尝试使用C#时,它工作正常。
static void Main(string[] args)
{
string str=@"\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf";
str=str.Replace(@"\E","");
Console.WriteLine(str);
Console.Read();
}
但是,我需要用JavaScript。
答案 0 :(得分:0)
var str='\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace(/\\E/g, '');
console.log(str, res)
您必须使用RegExg消除JavaScript中字符串内的转义符。
答案 1 :(得分:0)
在JavaScript中,与C#@
前缀等效的是String.raw
,后跟模板文字(请注意对策)。
要替换所有出现的事件(而不仅仅是一次),您需要使用replace
修饰符将正则表达式传递给g
。
var str=String.raw`\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf`;
var res=str.replace(/\\E/g, '');
console.log(res);
NB:正则表达式中的反斜杠是转义符,因此一个文字反斜杠需要\\
。
如果出于某种原因您真的想避免使用正则表达式,则可以使用split/join
技巧,但它会慢一些:
var str=String.raw`\E\\E\10.1.2.154\E\bcs\E\30877_P9999_Adult{2}_02_05_2019_0329p.pdf`;
var res=str.split(String.raw`\E`).join('');
console.log(res);
对于不支持String.raw
的较旧JS引擎,您需要使用标准的字符串文字,这些文字使用反斜杠作为转义字符。因此,您需要将所有这些都加倍。但这仅在将字符串写为文字时才需要。当您通过某些API获得字符串时,则无需在替换前更改字符串:
var str='\\E\\\\E\\10.1.2.154\\E\\bcs\\E\\30877_P9999_Adult{2}_02_05_2019_0329p.pdf';
var res=str.replace(/\\E/g, '');
console.log(res);