javascript中字符串的includes函数会受到标点符号的影响吗?

问题描述 投票:0回答:1

我试图找出一个错误,我正在寻找 iconNames 数组中的文本子集。我的过滤器看起来像这样:

name = isName ? images[iconNames.filter(icon => icon.includes(string))[0]] : ""

这适用于所有其他字符串,例如“Surfing”或“Sports”,并且具有图标名称 SurfingIcon 或 SportsIcon。我的问题是字符串“谁有时间做爱好?”它有一个图标名称 WhoHasTimeForHobbiesIcon。我知道 include 应该获取子集字符串,我觉得这符合条件。我想知道是否?正在影响这个或者是否有其他事情发生。

我可能可以更改过滤方式,但我只是手动将其设置为一个不起作用的字符串。

javascript string
1个回答
0
投票

不,不是。标点符号是字符串的一部分,也是一个字符串。您可以利用正则表达式来修复您的错误..

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\']
是除数字、字母、空格、下划线或单引号之外的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.