当字符串中存在空格时,字符串比较会给出错误的输出
String compare gives wrong output when white space is present in string
我有两个字符串:
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 中的空格。我想要一些返回 true 的东西,当我写 x === y
https://jsfiddle.net/hemantmalpote/ekzoveew/
您的文本是 UTF-8,194 160
转换为 0x00A0
,这是不间断空格的 Unicode 码位。这与普通的空格字符不同。有关相关的 SO 答案,请参阅此处,有关无间断空间的扩展 Unicode 信息页面,请参阅此处。
您可以通过正则表达式将所有空格替换为普通空格并进行比较,这是一个 SO 答案: https://stackoverflow.com/a/1496863/2535335 - 在您的情况下:
x = x.replace(/'u00a0/g, " ");
我想要一些返回 true 的东西,当我写 x === y
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
相关文章:
- 比较Javascript中的两个字符串时出错
- 尝试组合字符串时出错
- 解析从js发送到Java的json字符串时出错
- 在javascript中将字符串转换为int时出错
- 根据64字符串绘制画布图片时出错
- angularjs[ng:areq]参数'fn'不是函数,在控制台中获取字符串时出错
- WebSQL:处理SQL时出错:数量为''语句字符串中的s与参数计数不匹配
- 在 AngularJS 中将字符串转换为对象时出错
- NaN Javascript 和 Jquery 尝试连接数字和字符串时出错
- 将对象转换为字符串 Javascript 时出错
- 在 ES6 中扩展字符串时出错
- 将字符串中的方括号文字与JS正则表达式匹配时出错
- 将字符串变量传递给方法时出错
- NodeJS Bug?执行在要返回的字符串之前带有换行符的返回语句时出错
- 在javascript中连接utf字符串时出错
- 转义字符串时出错
- 敲除js时出错字符串不是函数
- JQuery比较字符串时出错
- 使用JQuery解析JSON字符串时出错
- Javascript:在字符串中匹配子字符串出错