提问人:Mwase 提问时间:10/9/2023 最后编辑:Mwase 更新时间:10/9/2023 访问量:76
在 JS 中的字符串中找不到明显的匹配项
Can't find an obvious match in a string in JS
问:
Node -v
v18.17.1
注意:本问题中使用的短语和标题都是从源复制的原始字符串
有一个短语和一个标题。我想检查该短语是否在标题中可用。 显然,它是可用的,但 JS 的响应就像没有找到匹配项一样,我不知道为什么(它不起作用),例如:
但是,当我不使用变量时,当我复制短语和标题值并直接运行它们时,会找到匹配项(它有效),例如:
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()
任何帮助或建议将不胜感激。
答:
0赞
Bart W
10/9/2023
#1
正如我所看到的,您正在使用 VS Code,因此,如果您在代码中手动声明标题(例如从其他地方复制粘贴),请确保启用了此选项:
编辑器 › Unicode Highlight: 不可见字符
[v] 控制是否突出显示仅保留空间或根本没有宽度的字符。
或者,您可以尝试以下方法:
- 计算短语中的字符数。
- 从开头到短语的长度剪掉标题的部分。
- 将切出部分的输出打印到控制台,并直接将其与短语进行比较。
如果它们看起来仍然相同,您还可以尝试:
- 对于两者:短语并剪掉标题的一部分,将它们转换为数组,将数组更改为每个字符的数组映射到使用 String.prototype.charCodeAt() 表示 Unicode,并比较两个数组的输出。如果字符串确实不同,您应该在某些位置找到数组中的差异。
评论
0赞
Mwase
10/9/2023
嘿。您提出了一些有用的提示。一旦我尝试了这些方法,我会给你我的反馈。
评论
includes()
true
false
=== true
if ((1===1) === true)