JavaScript是否有类似C# IndexOfAny的字符检测函数?
JavaScript 实现类似 C# IndexOfAny 的功能
JavaScript 本身没有内置的 IndexOfAny() 函数,但可以通过几种简单方式实现需求:
方法一:使用正则表达式
把字符数组转换成正则表达式,匹配目标字符串中是否存在任意指定字符。注意对 [、] 这类正则特殊字符进行转义,ES2021+ 可直接用 RegExp.escape() 处理。
const chars = ['[', ']', '{', '}']; const str = "BlahBlah}"; // 转义特殊字符并构建正则 const escapedChars = chars.map(c => RegExp.escape(c)).join(''); const regex = new RegExp(`[${escapedChars}]`); console.log(regex.test(str)); // 输出 true
方法二:使用数组的 some() 方法
遍历字符数组,用字符串的 includes() 逐个检查,只要有一个匹配就返回 true,逻辑直观易懂。
const chars = ['[', ']', '{', '}']; const str = "BlahBlah}"; const hasMatch = chars.some(char => str.includes(char)); console.log(hasMatch); // 输出 true
方法三:自定义封装函数
如果需要频繁使用,可以封装成类似 C# IndexOfAny 的函数,返回匹配字符的索引(无匹配返回 -1),按需转换成布尔值:
function indexOfAny(str, chars) { for (let i = 0; i < str.length; i++) { if (chars.includes(str[i])) { return i; // 返回第一个匹配字符的索引 } } return -1; } // 使用示例 const chars = ['[', ']', '{', '}']; const str = "BlahBlah}"; console.log(indexOfAny(str, chars) !== -1); // 输出 true
内容的提问来源于stack exchange,提问作者Jonathan Wood
相关产品推荐
相关产品推荐

