很直接。在 javascript 中,我需要检查一个字符串是否包含数组中的任何子字符串。
如何检查字符串是否包含 JavaScript 中子字符串数组中的文本?
IT技术
javascript
arrays
string
substring
contains
2021-02-01 07:26:46
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 支持
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);
对于谷歌搜索的人,
肯定的答案应该是。
const substrings = ['connect', 'ready'];
const str = 'disconnect';
if (substrings.some(v => str === v)) {
// Will only return when the `str` is included in the `substrings`
}
其它你可能感兴趣的问题