遇到个 js 问题

2018-05-31 15:20:33 +08:00
 Eugene1024

js 将一个字符串里面的多个\线全部替换为\\,下面是我写的,但是不对

var a ='2016\12\12'; alert(a.replace(/\\/g,'\\\\'));

1645 次点击
所在节点    程序员
9 条回复
topsy
2018-05-31 15:38:45 +08:00
赋值的时候字符串“ 2016\12\12 ”不是你想象中的那样,而是被转义字符‘\’+12 换成了回车符,所以你正则的时候已经找不到‘\’了。
husons
2018-05-31 15:52:43 +08:00
var a='2016/12/12';
alert(a.replace(/\//g,"\\\\"));
yangehappy
2018-05-31 15:54:09 +08:00
一楼已经解释了。你为什么要写成 2016\12\12 而不是 2016/12/12 这种形式呢
remon
2018-05-31 16:25:58 +08:00
楼上都解释了,就不多说了。只说一下如果一定要转这样的字符串的思路:
a.substring(0, 4) + '\\\\' + a.charAt(4).charCodeAt().toString(8) + '\\\\' + a.charAt(5).charCodeAt().toString(8)
tinycold
2018-05-31 16:51:15 +08:00
楼上都解释了,建议你把 a 打出来看看,深刻体会一下
Eugene1024
2018-05-31 17:06:51 +08:00
@topsy 原来如此,对 js 了解的不是很深入,谢谢回答
@husons 我这样写过,只是没明白转义符+数字在赋值的时候已经改变了
@yangehappy 我从数据库取出来的值是带多个反斜线的,偶然遇到,不是自己写的
@remon 谢谢回答
webfamer
2018-05-31 17:08:16 +08:00
刷刷高程?
Eugene1024
2018-05-31 17:14:35 +08:00
@tinycold 我之前就打印过 a,打印出来是 2016,遗憾的是当时还是没明白
Eugene1024
2018-05-31 17:17:15 +08:00
@webfamer 确实该好好看看 JS 基础了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/459257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX