在 JS 中的字符串中找不到明显的匹配项

Can't find an obvious match in a string in JS

提问人:Mwase 提问时间:10/9/2023 最后编辑:Mwase 更新时间:10/9/2023 访问量:76

问:

Node -v
v18.17.1

注意:本问题中使用的短语和标题都是从源复制的原始字符串

有一个短语和一个标题。我想检查该短语是否在标题中可用。 显然,它是可用的,但 JS 的响应就像没有找到匹配项一样,我不知道为什么(它不起作用),例如:

enter image description here

但是,当我不使用变量时,当我复制短语和标题值并直接运行它们时,会找到匹配项(它有效),例如:

let title = 'Benny Blanco, Halsey & Khalid - Eastside (Lyrics)';

title = title.toLowerCase();

let phrase = 'benny blanco';

console.log('match:', title.includes(phrase) === true ? 'found' : '404'); 

// it is working

起初我以为这只是一个空格问题,但我尝试使用字符串包中可用的方法规范化空格,但没有任何变化。collapseWhitespace()

任何帮助或建议将不胜感激。

JavaScript 节点 .js 字符串 匹配

评论

2赞 Reyno 10/9/2023
仅供参考:已经返回或,这意味着已过时includes()truefalse=== true
3赞 Nina Scholz 10/9/2023
你的短语末尾有空白吗?
2赞 freedomn-m 10/9/2023
您提供了一些似乎有效的代码 - 这不会让我们帮助您处理不起作用的代码 - 您能提供吗?
1赞 freedomn-m 10/9/2023
雷诺说不需要 - 如果这是一个风格问题,那就继续。if ((1===1) === true)
1赞 freedomn-m 10/9/2023
在不起作用的代码中,标题/短语的值来自哪里?

答:

0赞 Bart W 10/9/2023 #1

正如我所看到的,您正在使用 VS Code,因此,如果您在代码中手动声明标题(例如从其他地方复制粘贴),请确保启用了此选项:

编辑器 › Unicode Highlight: 不可见字符

[v] 控制是否突出显示仅保留空间或根本没有宽度的字符。

或者,您可以尝试以下方法:

  1. 计算短语中的字符数。
  2. 从开头到短语的长度剪掉标题的部分。
  3. 将切出部分的输出打印到控制台,并直接将其与短语进行比较。

如果它们看起来仍然相同,您还可以尝试:

  1. 对于两者:短语并剪掉标题的一部分,将它们转换为数组,将数组更改为每个字符的数组映射到使用 String.prototype.charCodeAt() 表示 Unicode,并比较两个数组的输出。如果字符串确实不同,您应该在某些位置找到数组中的差异。

评论

0赞 Mwase 10/9/2023
嘿。您提出了一些有用的提示。一旦我尝试了这些方法,我会给你我的反馈。