在JS中如何判断原始字符串中的引号(”"“)是否是转义过(“\"”)的呢?

const str = "hi \"Tom\"";
console.log(str[3]==='"'); // true
console.log(str.charCodeAt(3)==='"'.charCodeAt(0)); // true

无论使用三等号对比还是使用ASCII码对比原始字符串中的“\"”“"”都相等;

那我究竟该怎么判断字符串中的引号究竟是\"还是"呢?

回复
阅读 2.8k
4 个回答

image.png
单个反斜杠无实际意义,在字符串中表示转义符。

最近在 这个问题 下丢了一次脸。
JS 的角度来看,转义信息是不可见的,转义来的字符和非转义的原始字符没啥区别,所以具体实践方案还是要看项目的实际情况。

这个其实是理解错误,转义字符其实只在输入时起作用(存在与代码中,或者交互信息输入过程中——比如有时从文本输入框中获取信息时),输入后存储的实质是没有转义符的,所以你所谓的3等号对比肯定是相同的。
而在输入时是有严格规定的,相应的规定是

  1. 最外围的成对引号完成包裹,另外的引号就不用转义,比如'"'中双引号是可以不用转义的(加转义符也没有问题)
  2. 同类引号必须转义,即'\''才是一个完整的信息输入,'\'是会报错的
  3. 输入转义字符都需要要转义,即要输入\必须是'\\'或者"\\"的形式
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏