比较具有不同空格和可能为空字符的字符串
Compare strings with different spaces and potentially null characters
我目前正在为我正在进行的项目制作维基百科抓取工具。问题是我的代码在尝试比较字符串时有时会产生错误。如果我有看起来相同的字符串,它们有时仍会被注册为不同的。例如:
var elementText = $("selector").text();
console.log(elementText); // "abc def"
console.log(elementText === "abc def"); // false
维基百科似乎使用了一些我的代码检测到但不喜欢的奇怪字符。我试过:
function replaceBadSpaces(string) {
return decodeURIComponent(encodeURIComponent(string).replace("/%C2%A0/g", "%20"));
}
并使用 elementText.replace(/\s+/g, '')
,但似乎都不起作用。我怎样才能完全摆脱这些字符,以便直观上相等的字符串实际上匹配相等?
注意:我也用 ==
测试了我的代码,它似乎确实解决了这个问题;但是,为了避免将来出现错误,我想避免使用此修复程序。
删除 replace
的第一个参数周围的引号。这是因为您正在为替换函数使用正则表达式 ( /g
),它不需要用引号引起来。
function replaceBadSpaces(string) {
return decodeURIComponent(encodeURIComponent(string).replace(/%C2%A0/g, "%20"));
}
我目前正在为我正在进行的项目制作维基百科抓取工具。问题是我的代码在尝试比较字符串时有时会产生错误。如果我有看起来相同的字符串,它们有时仍会被注册为不同的。例如:
var elementText = $("selector").text();
console.log(elementText); // "abc def"
console.log(elementText === "abc def"); // false
维基百科似乎使用了一些我的代码检测到但不喜欢的奇怪字符。我试过:
function replaceBadSpaces(string) {
return decodeURIComponent(encodeURIComponent(string).replace("/%C2%A0/g", "%20"));
}
并使用 elementText.replace(/\s+/g, '')
,但似乎都不起作用。我怎样才能完全摆脱这些字符,以便直观上相等的字符串实际上匹配相等?
注意:我也用 ==
测试了我的代码,它似乎确实解决了这个问题;但是,为了避免将来出现错误,我想避免使用此修复程序。
删除 replace
的第一个参数周围的引号。这是因为您正在为替换函数使用正则表达式 ( /g
),它不需要用引号引起来。
function replaceBadSpaces(string) {
return decodeURIComponent(encodeURIComponent(string).replace(/%C2%A0/g, "%20"));
}