如何检查字符串是否包含 JavaScript 中子字符串数组中的文本?

IT技术 javascript arrays string substring contains
2021-02-01 07:26:46

很直接。在 javascript 中,我需要检查一个字符串是否包含数组中的任何子字符串。

6个回答

没有任何内置功能可以为您做到这一点,您必须为它编写一个函数,尽管它可以只是对some数组方法的回调

两种方法给你:

  • 数组some方法
  • 正则表达式

大批 some

数组some方法(在 ES5 中添加)使这变得非常简单:

if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
    // There's at least one
}

使用箭头函数和新includes方法(ES2015+)甚至更好

if (substrings.some(v => str.includes(v))) {
    // There's at least one
}

现场示例:

正则表达式

如果您知道字符串不包含任何正则表达式中的特殊字符,那么您可以作弊,如下所示:

if (new RegExp(substrings.join("|")).test(string)) {
    // At least one match
}

...它创建了一个正则表达式,它是您正在寻找的子字符串(例如,的一系列交替one|two并测试是否有任何匹配项,但如果任何子字符串包含任何特殊字符在正则表达式(*[等)中,您必须先转义它们,而最好只执行无聊的循环。有关转义它们的信息,请参阅此问题的答案

现场示例:

一条线解决方案

substringsArray.some(substring=>yourBigString.includes(substring))

true\false如果子字符串返回exists\does'nt exist

需要 ES6 支持

使用箭头函数的绝佳解决方案
2021-03-21 07:26:46
你们这些孩子……当我还是个孩子的时候,我们不得不使用这些叫做“for”循环的东西,你必须使用多行并知道你的数组是基于 1 还是基于 0,是的……你有一半的时间它错了,不得不调试并注意一个名为“i”的小家伙。
2021-04-11 07:26:46
var yourstring = 'tasty food'; // the string to check against


var substrings = ['foo','bar'],
    length = substrings.length;
while(length--) {
   if (yourstring.indexOf(substrings[length])!=-1) {
       // one of the substrings is in yourstring
   }
}
function containsAny(str, substrings) {
    for (var i = 0; i != substrings.length; i++) {
       var substring = substrings[i];
       if (str.indexOf(substring) != - 1) {
         return substring;
       }
    }
    return null; 
}

var result = containsAny("defg", ["ab", "cd", "ef"]);
console.log("String was found in substring " + result);
最容易理解的!
2021-03-12 07:26:46
另外它返回字符串中单词的第一次出现,这非常有帮助。不仅是真/假。
2021-03-13 07:26:46
什么是 es6 等价物?
2021-03-31 07:26:46

对于谷歌搜索的人,

肯定的答案应该是。

const substrings = ['connect', 'ready'];
const str = 'disconnect';
if (substrings.some(v => str === v)) {
   // Will only return when the `str` is included in the `substrings`
}
或更短: if (substrings.some(v => v===str)) {
2021-03-13 07:26:46
请注意,这是对稍微不同的问题的回答,该问题询问字符串是否包含来自子字符串数组的文本。此代码检查字符串是否为子字符串之一。取决于我想“包含”是什么意思。
2021-04-11 07:26:46