非常直截了当。在javascript中,我需要检查字符串是否包含数组中持有的任何子字符串。
当前回答
你可以这样检查:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var list = ["bad", "words", "include"]
var sentence = $("#comments_text").val()
$.each(list, function( index, value ) {
if (sentence.indexOf(value) > -1) {
console.log(value)
}
});
});
</script>
</head>
<body>
<input id="comments_text" value="This is a bad, with include test">
</body>
</html>
其他回答
如果您正在处理一长串子字符串,这些子字符串由空格或任何其他常见字符分隔的完整“单词”组成,那么您可以在搜索中使用一些聪明的方法。
首先把你的字符串分成X组,然后X+1,然后X+2,…X和Y应分别为子字符串中单词最少和最多的单词数。例如,如果X是1,Y是4,“Alpha Beta Gamma Delta”变成:
"阿尔法" "贝塔" "伽马" "德尔塔"
"阿尔法·贝塔" "贝塔·伽马" "伽马·德尔塔"
"Alpha Beta Gamma" "Beta Gamma Delta"
"Alpha Beta Gamma Delta"
如果X是2 Y是3,那么你可以省略第一行和最后一行。
现在,如果您将它插入到Set(或Map)中,就可以快速搜索这个列表,比字符串比较快得多。
缺点是你不能搜索像“ta Gamm”这样的子字符串。当然,你可以通过按字符而不是按单词进行分割来实现这一点,但这样你通常需要构建一个庞大的Set,并且这样做所花费的时间/内存超过了好处。
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
}
}
全面支持(除了@ricca的版本)。
wordsArray = ['hello', 'to', 'nice', 'day'] yourString = '你好。今天天气不错’。 result = wordsArray。每个(w => yourstring .include (w)) console.log(“结果:”,结果)
substringsArray.every(substring=>yourBigString.indexOf(substring) === -1)
全力支持;)
你可以这样检查:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var list = ["bad", "words", "include"]
var sentence = $("#comments_text").val()
$.each(list, function( index, value ) {
if (sentence.indexOf(value) > -1) {
console.log(value)
}
});
});
</script>
</head>
<body>
<input id="comments_text" value="This is a bad, with include test">
</body>
</html>