我只需要与 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"
所以最后是不同编码的空白使我的比较失败。
所以我的问题是:如何正确处理这个问题?我可以将空格替换为相等吗?但我猜还有其他控制字符 - 比如制表符、回车符等 - 这可能会扰乱我的比较?
所以最后是不同编码的空白使我的比较失败。
不,这没有什么不同encoding https://en.wikipedia.org/wiki/Character_encoding。它只是一个不同的空白 - a不间断空格 https://en.wikipedia.org/wiki/Non-breaking_space.
我可以将空白替换为相等吗?但我猜还有其他控制字符 - 比如制表符、回车符等 - 这可能会扰乱我的比较?
您可以全部更换。你可能想尝试类似的事情
value1.replace(/\s+/g, " ").replace(/^\s*|\s$/g, "") == value2
which joins https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace multiple http://www.regular-expressions.info/repeat.html 空格 http://www.regular-expressions.info/shorthand.html (of 所有种类 http://es5.github.io/#x7.2, 包括returns http://es5.github.io/#x7.3) 到一个空格并且也trims https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim比较之前的字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)