提问人:TSR 提问时间:4/12/2021 最后编辑:ggorlenTSR 更新时间:4/12/2021 访问量:481
看起来相同的字符串不相等
Strings that look the same aren't equal
问:
某些单元测试失败。调试后,我在这里跟踪了问题
var a = "USD 1,234.12"
var b = "USD 1,234.12"
console.log(a === b)
字符串由货币格式化程序库生成,字符串由单元测试开发人员编写。a
b
我不明白为什么这两个看起来相同的字符串不被认为是相等的。这是怎么回事?===
答:
10赞
Evert
4/12/2021
#1
你的两个字符串有一个隐藏的区别。运行以下命令:
var a = "USD 1,234.12"
var b = "USD 1,234.12"
for (var i = 0; i < a.length; i++) {
console.log(a.codePointAt(i), b.codePointAt(i));
}
字符串中的空格是常规空格 (32),而字符串中的空格是 Unicode 不间断空格 (160)。b
a
下一个:运算符重载复制构造和 = 运算符
评论
Array.from(a).findIndex((char, index) => char !== b[index])
Array.from(a).forEach((char, index) => console.log("a", char, char.codePointAt(), "vs. b", b[index], b[index].codePointAt()))