JS中判断两个字符串,明明看着相等却判断不相等的问题

“str”=="str"输出false

一、问题

两个字符串看起来一样、类型一样,判断str1==str2时返回false;

二、原因

字符串可能含有其他特殊字符:换行符(%D)、空格(%20)、16进制空格(%C2%A0)…一般不显示。

三、如何判断

encodeURIComponent(str) 可查看字符串完整内容

四、解决

var urlEncodedString = 'A%C2%A0BC';
var dataValue = decodeURIComponent(urlEncodedString);

//替换
dataValue = dataValue.replace(/\xA0/g, " "); //\xA0表示非打印字符"NO-BREAK SPACE"的Unicode编码值(16进制空格),替换成空格
dataValue = dataValue.replace(/\ +/g,""); //去掉空格方法
dataValue = dataValue.replace(/[ ]/g,""); //去掉空格
dataValue = dataValue.replace(/[\r\n]/g,""); //去掉回车换行
dataValue = dataValue.replace(/-/g, ""); //去掉"-"号

输出:ABC

你可能感兴趣的:(javascript,前端,开发语言)