今天在写js的时候,遇到一个奇怪的问题,明明两个字符串相同,console打印出来也一样,首尾都没有空格,typeof的结果都是string。
可是用a==b却判断为不相等
后来在网上查了资料,得知可能是字符串里面有其他特殊字符,导致两个字符串肉眼看上去没有区别,但是用encodeURIComponent()处理后可能不一样。
我用encodeURIComponent()把两个字符串的结果打印出来比较,发现其中一个后面多了个“%D",这是换行符的编码,这就是两个字符串不相等的原因了。
解决办法:去掉字符串中的特殊字符再比较。
.replace(/\ +/g,"") //去掉空格方法
.replace(/[ ]/g,"")//去掉空格
.replace(/[\r\n]/g,"")//去掉回车换行
.replace(/-/g, '') //去掉"-"号