提问人:Mik 提问时间:4/6/2012 最后编辑:LiamMik 更新时间:3/7/2022 访问量:139106
如何在字符串中使用反斜杠 (\)?
How can I use backslashes (\) in a string?
问:
我尝试了很多方法来从执行的中获取单个反斜杠(我不是说来自 的输入)。html
我可以获得制表符、换行符和许多其他特殊字符,然后将它们转义为 or 或,但是当非特殊字符旁边有时,我无法获得单个反斜杠。\\t
\\n
\\(someother character)
我不想要这样的东西:
str = "\apple"; // I want this, to return:
console.log(str); // \apple
如果我尝试在 0 处获得字符,那么我会得到而不是 .a
\
答:
\
是一个转义字符,当后面跟着一个非特殊字符时,它不会变成一个字面词。相反,你必须加倍.\
\\
console.log("\apple"); //-> "apple"
console.log("\\apple"); //-> "\apple"
无法获取原始的原始字符串定义,也无法创建没有转义字符的文本字符串。
评论
(请参阅答案末尾的 ES2015 更新。
您已将问题标记为 和 。string
regex
在 JavaScript 中,反斜杠在字符串文字和正则表达式中都具有特殊含义。如果要在字符串或正则表达式中使用实际的反斜杠,则必须编写两个: .\\
以下字符串以一个反斜杠开头,您在文本中看到的第一个字符串是开始转义序列的转义字符。转义序列告诉解析器在字符串中放置一个反斜杠:\\
var str = "\\I have one backslash";
以下正则表达式将匹配单个反斜杠(而不是两个);同样,您在文字中看到的第一个是开始转义序列的转义字符。转义序列告诉解析器在正则表达式模式中放置一个反斜杠字符:\\
var rex = /\\/;
如果您使用字符串创建正则表达式(而不是像上面那样使用正则表达式文本),请注意,您正在处理两个级别:字符串级别和正则表达式级别。因此,要使用与单个反斜杠匹配的字符串创建正则表达式,最终需要使用四个:
// Matches *one* backslash
var rex = new RegExp("\\\\");
这是因为首先,您正在编写一个字符串文字,但您实际上想在生成的字符串中放置反斜杠,因此您想要的每个反斜杠都这样做。但是你的正则表达式也要求你想要的每个真正的反斜杠都有两个,因此它需要在字符串中看到两个反斜杠。因此,总共有四个。这是我尽可能避免使用的原因之一;我很容易感到困惑。:-)\\
\\
new RegExp(string)
ES2015 和 ES2018 更新
快进到 2015 年,正如Dolphin_Wood指出的那样,新的 ES2015 标准为我们提供了模板文字、标签函数和 String.raw
函数:
// Yes, this unlikely-looking syntax is actually valid ES2015
let str = String.raw`\apple`;
str
最终在其中有字符 、 、 、 和。请注意,您的模板文字中没有,因为在模板文字中开始替换。例如:\
a
p
p
l
e
${
${
let foo = "bar";
let str = String.raw`\apple${foo}`;
...最终是.\applebar
评论
\a
{"apple":"\\apple"}
{"nectarine":"\nectarine"}
<CR>ectarine
\n
String.raw
String.raw`\`;
不行,但你可以作弊做,似乎行得通String.raw`\apple`.replace('apple', '');
尝试方法:String.raw
str = String.raw`\apple` // "\apple"
此处引用:String.raw()
评论
${
1\2
String.raw`\`;
不行,但你可以作弊做,似乎行得通String.raw`\apple`.replace('apple', '');
请尝试以下对我有用的方法,并且我得到了带有反斜杠的输出
String sss="dfsdf\\dfds";
System.out.println(sss);
评论
new RegExp(string)