java反斜杠_如何在字符串中使用反斜杠(\)?

(请参阅答案末尾的ES2015更新。)

您已经标记的问题都string和regex。

在JavaScript中,反斜杠在字符串文字和正则表达式中都有特殊含义。如果你想在字符串或正则表达式中使用实际的反斜杠,你必须写两个:\\。

这个字符串以一个反斜杠开头,你在文字中看到的第一个是一个转义字符,告诉我们按字面意思取下一个字符:var str = "\\I have one backslash";

这个正则表达式将匹配单个反斜杠(不是两个); 再一次,你在文字中看到的第一个是一个转义字符,告诉我们按字面意思取下一个字符:var rex = /\\/;

如果您使用字符串来创建正则表达式(而不是像我上面那样使用正则表达式文字),请注意您正在处理两个级别:字符串级别和正则表达式级别。因此,要使用与单个反斜杠匹配的字符串创建正则表达式,最终使用四个:// Matches *one* backslashvar rex = new RegExp("\\\\");

那是因为首先,你正在编写一个字符串文字,但你想在其中放入反斜杠。所以你要\\为你想要的每一个反斜杠做到这一点。但是你的正则表达式也需要两个\\你想要的每个真正的反斜杠,所以它需要在字符串中看到两个反斜杠。因此,共有四个。这是我new RegExp(string)尽可能避免使用的原因之一; 我很容易混淆。:-)

ES2015更新

快进到2015年,正如Dolphin_Wood指出新的ES2015标准为我们提供了模板文字,标签功能和String.raw功能:// Yes, this unlikely-looking syntax is actually valid ES2015let str = String.raw`\apple`;

str结束有字符\,a,p,p,l,和e在它。请注意,${在“字符串”(模板)中没有,因为这是模板文字并${开始替换。例如:let foo = "bar";let str = String.raw`\apple${foo}`;

......结束了\applebar。另请注意,这与C#中的“逐字”字符串不太相似,因为不允许与规范中的LegacyOctalEscapeSequence匹配的序列并导致语法错误。所以举个例子// Failslet str = String.raw`c:\foo\12\bar`;

...失败,因为\12看起来像遗留的八进制文字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值