我只需要与JavaScript中的字符串进行比较,有时候特定字符串的比较会失败。
使用jQuery通过text()
方法(来自某些自动生成的HTML)获得了一个值:
var value1 = $('#somelement').text();
另一个值在JavaScript文件中硬编码(来自我)。
经过一些测试后,我发现这些字符串有不同的编码,当我使用escape()
函数记录它们时,这些编码就变得清晰了。
Firebug向我展示了这样的事情:
console.log(escape(value1));
"blabla%A0%28blub%29"
console.log(escape(value2));
"blabla%20%28blub%29"
所以最后它是具有不同编码的空白,这使得我的比较失败了。
所以我的问题是:如何正确处理?我可以将空格替换为相等吗?但我想还有其他控制字符 - 比如tab,return等等 - 这可能搞砸了我的比较?
答案 0 :(得分:0)
所以最后它是具有不同编码的空白,这使得我的比较失败了。
不,它不是一个不同的encoding。它只是一个不同的空格 - non-breaking space。
我可以将白色空间替换为相等吗?但我想还有其他控制字符 - 比如tab,return等等 - 这可能搞砸了我的比较?
您可以替换所有这些。你可能想尝试像
这样的东西value1.replace(/\s+/g, " ").replace(/^\s*|\s$/g, "") == value2
joins multiple whitespaces(all kinds的returns,包括trims)到单个空格,还有{{3}}比较前的字符串