gpt4 book ai didi

Javascript:搜索数组以查看它是否包含字符串的一部分

转载 作者:行者123 更新时间:2023-11-28 07:44:50 25 4
gpt4 key购买 nike

使用 javascript(或 Jquery)如何将文本字符串与数组进行比较并返回匹配值?

例如,如果我有一个数组:

    var names = ["John", "Mary", "George"];

我有一个字符串:

   var sentence = "Did Mary go to the store today?";

我想比较字符串和数组并返回匹配的单词,在本例中为“Mary”。

我已经搜索过,我发现的所有内容似乎都在比较特定的字符串。我正在寻找的是匹配的 PARIALS。

谢谢!

最佳答案

为了避免 Johnathon 匹配 John,您需要构建一个正则表达式:

var names = ["John", "Mary", "George"];
var regex = new RegExp("(^|[^a-zA-Z0-9])(" + names.join("|") + ")([^a-zA-Z0-9]|$)", "g");

regex.test("Did Johnathon go to the store today?"); // false
regex.test("Did John go to the store today?"); // true

如果名称位于字符串开头或其前面有非字母数字字符,则您希望匹配该名称(^|[^a-zA-Z0-9]),并且如果名称位于字符串末尾或后面有非字母数字字符 ([^a-zA-Z0-9]|$)。因此,这两个捕获位于名称列表之前和之后。

收集姓名:

var matches = [];
var sentence = "Did John or Mary go to the store today?";

sentence.replace(regex, function(match, $1, $2, $3) {
matches.push($2);
});

console.log(matches);

以及快速可重用的功能:

function getMatchingWords(words, s) {
var matches = [],
regex = new RegExp("(^|[^a-zA-Z0-9])(" + words.join("|") + ")([^a-zA-Z0-9]|$)", "g");

s.replace(regex, function(match, $1, $2, $3) {
matches.push($2);
});

return matches;
}

var matches = getMatchingWords(["John", "Mary", "Billy"], "Did John or Mary go to the store today?");

关于Javascript:搜索数组以查看它是否包含字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com