我有两个字符串:
x = "hi hemant how r u"
y = "hi hemant how r u"
如果我们看到,两者看起来都一样,但
x === y gives false.
我检查两者的ascii值,这是不同的
x = "hi hemant how r u"
034 104 105 032 104 101 109 097 110 116 194 160 104 111 119 032 114 032 117 034
y = "hi hemant how r u"
034 104 105 032 104 101 109 097 110 116 032 104 111 119 032 114 032 117 034
区别在于194 160表示x中的空白区域,而032表示y中的空白区域。 当我写x === y
时,我想要一些返回true的东西答案 0 :(得分:2)
您的文字是UTF-8,194 160
转换为0x00A0
,这是非破坏空间的Unicode代码点。这是不与普通空格字符相同。请参阅here以获取相关的SO答案,并here for an extended Unicode info page查看无休息空间。
你可以用普通空格通过正则表达式替换所有空格然后进行比较,这里有一个答案:https://stackoverflow.com/a/1496863/2535335 - 在你的情况下:
x = x.replace(/\u00a0/g, " ");
答案 1 :(得分:0)
当我写x === y
时,我想要一些返回true的东西
var x = "hi hemant how r u";
var y = "hi hemant how r u";
使用普通空格" "
x.split( /\s+/ ).join( " " ) == y.split( /\s+/ ).join( " " ) //outputs true
在这里,我将与空格匹配的任何内容转换为单个空格" "
。
var x = "hi hemant how r u";
var y = "hi hemant how r u";
x = x.split( /\s+/ ).join( " " );
y = y.split( /\s+/ ).join( " " );
alert( x == y ); //alerts true
alert( x === y ); //alerts true