为了账号安全,请及时绑定邮箱和手机立即绑定

js中如何判断一个字符是不是被转义的

js中如何判断一个字符是不是被转义的

吃鸡游戏 2019-03-22 11:15:35
给定一个字符串,其中包含若干个",如:var str = 'a"b\"b"a';通过charAt可以得知,1,3,5位置上的字符都是"。console.log(str.charAt(1) === '"'); // trueconsole.log(str.charAt(3) === '"'); // trueconsole.log(str.charAt(5) === '"'); // true现在有什么方法能都得知,第2个"是被转义的,与另两个"是有差别的?问题背景,在对一个字符串做词法解析时,需要逐个遍历字符找出正确的"匹配,希望忽略掉被转义的"。希望能够试用于若干个"的情况,如:var str = 'a"b\"b\"b"a';请高人指点,感谢。补一个使用场景的case:有一段数据,比如:var data = { "key": { "a'b" : "foo" } }; 然后view中有个模板,如下,运行正常。{{key["a'b"]}}上面的模板是没问题的,但因为模板的是给别人写的,有的人写成下面这样,解析失败了。{{key['a\'b']}}从书写模板的层面来看,使用者没有犯错,所以希望在模板引擎内部编译时,能找个方法正确忽略掉转义的引号。这里要得到的确实是a'b的值(foo),而不是a\'b的值(undefined)。
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

var str = 'a"b\"b"a';

写起来虽然不一样,但解释过后,这些引号在内存里都是一样的,无法区分。所以楼主的测试数据不能这么写。
要写成

var str = 'a"b\\"b"a';


查看完整回答
反对 回复 2019-04-12
  • 2 回答
  • 0 关注
  • 1221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信