一.首先网上关于正反斜杠的博客已经有很多了,这里不叙述太多,进入正题。
对于很多新手来讲,windows的dos系统已经逐渐淘汰,接触的并不多,在dos中使用反斜杠“\”作为分隔符,而在Unix中使用斜杆/作为路径分隔符,最新的web应用使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符。(这段看不懂的可以忽略);
- 在前端开发中,如果涉及background-image:url(/Image/Control/title.jpg),这种路径,必须要用正斜杠表示,否则会出错;而在标签img中文件路径,/ 和 \ 是等效的,也就是说用哪个都可以,不过我们习惯用正斜杠。
- 在网络地址http中,必须使用正斜杠;
正反斜杠互相替换(重点)
1.正斜杠全部替换成反斜杠例如:将var a =”a/b/c/d”;我们需要这样做:
var b = a.replace(/\//g, “\”); 字符串不可变,这里需要用到转义符\才能成功转换
alert(b);
2.反斜杠全部替换成正斜杠(难点,网络上的很多方法都不能解决)例如:将var a =”a\b\c\d”;这里如果按照:
alert(a.replace(/\\/g, “\/”);这种转换是不会成功的,原因是在前端字符串中如果有一个\,打印时只会显示abcd,没有中间的\,那么如何转换呢?其实有两个方法:
(1).让后端转换-。-
(2)在body中虚构一个input标签,设置隐藏,将字符串当其value值。然后在js中替换
<input name="text1" id="text1" value="D:\MyDesktop\ruby\baby\ok" style="display: none">
<script>
var str=document.getElementById("text1").value;
alert(str);
var str1 = str.replace(/\\/g,"/");
alert(str1);
</script>
究其原因,不要问哥,不过可以完美解决替换问题。