我遇到的问题是,Sharepoint API从表中返回一个字符串,该表看起来与我想要比较的字符串完全相同。但比较总是失败。
at
"people lookbook+"
lt
"people lookbook+"
at == lt
false
at === lt
false
当我遍历字符串并打印出charcodes时,我可以看到差异。
那么如何比较它们或者我应该如何解码呢?
这里是charcodes:
for (index = 0; index < at.length; ++index) {
console.log("char " + index + ": " + at.charCodeAt(index));
}
VM1116:2 char 0: 112
VM1116:2 char 1: 101
VM1116:2 char 2: 111
VM1116:2 char 3: 112
VM1116:2 char 4: 108
VM1116:2 char 5: 101
VM1116:2 char 6: 32
VM1116:2 char 7: 108
VM1116:2 char 8: 111
VM1116:2 char 9: 111
VM1116:2 char 10: 107
VM1116:2 char 11: 98
VM1116:2 char 12: 111
VM1116:2 char 13: 111
VM1116:2 char 14: 107
VM1116:2 char 15: 43
for (index = 0; index < lt.length; ++index) {
console.log("char " + index + ": " + lt.charCodeAt(index));
}
VM1118:2 char 0: 112
VM1118:2 char 1: 101
VM1118:2 char 2: 111
VM1118:2 char 3: 8203
VM1118:2 char 4: 112
VM1118:2 char 5: 108
VM1118:2 char 6: 101
VM1118:2 char 7: 32
VM1118:2 char 8: 108
VM1118:2 char 9: 111
VM1118:2 char 10: 111
VM1118:2 char 11: 107
VM1118:2 char 12: 98
VM1118:2 char 13: 111
VM1118:2 char 14: 111
VM1118:2 char 15: 8203
VM1118:2 char 16: 107
VM1118:2 char 17: 43
VM1118:2 char 18: 8203
VM1118:2 char 19: 8203
答案 0 :(得分:1)
8203是Zero width space。这可能不是真的需要。你可以像这样剥离它
lt = lt.replace( /\u8203/g, '' );
然后比较将起作用。问题是,是否插入了其他一些字符,在这种情况下,您需要将其他字符添加到正则表达式。这可能不是一个非常优雅的解决方案。
答案 1 :(得分:1)
在Wa Kai和nomve的帮助下,我发现有些8203个字符可以通过使用以下代码来解决:
lt.replace(/\u200B/g,'')
为了保持舒尔,你也可以使用它:
lt.replace(/[\u200B-\u200D\uFEFF]/g, '');
将删除: