2014-11-04 90 views
3

我只需要比较JavaScript中的字符串,并且特定字符串的比较有时会失败。与jQuery经由text()方法,得到比较不同编码的字符串

一个值(从一些自动生成HTML):

var value1 = $('#somelement').text(); 

,其它的值​​是在JavaScript文件硬编码(来自我)。

经过一番测试,我发现这些字符串有不同的编码,当我用escape()函数记录它们时,这些编码就变得很清楚。

萤火虫给我看是这样的:

console.log(escape(value1)); 
"blabla%A0%28blub%29" 
console.log(escape(value2)); 
"blabla%20%28blub%29" 

所以最终它与这让我比较失败不同编码的空白。

所以我的问题是:如何正确处理这个问题?我可以将空白替换为相等吗?但我想还有其他控制角色 - 比如制表符,回归等 - 这可能会弄乱我的比较?

+2

不,它不是一个不同的编码。它只是一个不同的空白。 – Bergi 2014-11-04 15:26:46

回答

0

所以最后是不同编码的空白使我的比较失败。

不,这不是一个不同的encoding。它只是一个不同的空白 - 一个non-breaking space

我可以直接替换白色空间吗?但我想还有其他控制角色 - 比如制表符,回归等 - 这可能会弄乱我的比较?

您可以将其全部替换。你可能想尝试像

value1.replace(/\s+/g, " ").replace(/^\s*|\s$/g, "") == value2 

joinsmultiplewhitespaces(的all kinds,包括returns)到一个单一的空间,同时也trims比较之前的字符串。

+0

非常感谢您的澄清和解决方案。 – user2345998 2014-11-04 15:38:23