我试图找出一个错误,我正在寻找 iconNames 数组中的文本子集。我的过滤器看起来像这样:
name = isName ? images[iconNames.filter(icon => icon.includes(string))[0]] : ""
这适用于所有其他字符串,例如“Surfing”或“Sports”,并且具有图标名称 SurfingIcon 或 SportsIcon。我的问题是字符串“谁有时间做爱好?”它有一个图标名称 WhoHasTimeForHobbiesIcon。我知道 include 应该获取子集字符串,我觉得这符合条件。我想知道是否?正在影响这个或者是否有其他事情发生。
我可能可以更改过滤方式,但我只是手动将其设置为一个不起作用的字符串。
不,不是。标点符号是字符串的一部分,也是一个字符串。您可以利用正则表达式来修复您的错误..
let iconNames=['SurfingIcon', 'SportsIcon', "WhoHasTimeForHobbiesIcon"]
string = "Who has time for hobbies?"
let name = iconNames.filter(icon => icon.toLowerCase().includes(string.toLowerCase().replaceAll(' ', '').replaceAll(/[^\w\s\']/g, '')))[0];
console.log(name)
[^\w\s\']
是除数字、字母、空格、下划线或单引号之外的任何内容。