搜索字符串中的确切单词,返回匹配项数

时间:2020-05-06 14:48:22

标签: javascript jquery

你好,我想知道是否有人可以帮忙,我想在字符串中搜索一个单词,并控制台记录该单词在字符串中出现的次数,但是我只希望它返回整个单词的计数找到,因此目前下面的示例将返回“ 3”,因为它将两次找到“ car”,但其中还会包含“ car”一词的“ care”一词,无论如何我都可以修改代码,以便找到整个单词,而不是里面的单词?

非常感谢。

<div class="sentence">I have a car and I need to take good care of this car</div>

let find = 'car';

let count = $('.sentence').text().split(find).length - 1;

console.log(count);

5 个答案:

答案 0 :(得分:0)

您可以使用正则表达式并使用test来匹配确切的字符串。 $('.sentence').text().split(' ')将拆分字符串并创建一个数组,然后使用reduce获取计数。在reduce回调中,使用test来匹配确切的单词,如果匹配则增加计数

let find = 'car';
let count = $('.sentence').text().split(' ').reduce((acc, curr) => {
  if (/^car$/.test(curr)) {
    acc += 1;
  }
  return acc;
}, 0)
console.log(count);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="sentence">I have a car and I need to take good care of this car</div>

答案 1 :(得分:0)

绝对有一种方法,使用match:

let count = $('.sentence').text().match(/\bcar\b/g).length;

由于使用了字边界(\b),因此返回值为2。如果不使用它,即/car/,则由于该字符串中的单词care,返回值为3。

答案 2 :(得分:0)

您可以在此处使用match查找所有子字符串。

const matches = line.match(/\bcar\b/g)

如果没有匹配项或数组,它将返回null

因此,要对它们进行计数:

const count = matches ? matches.length : 0

答案 3 :(得分:0)

您可以做的是根据空格分隔符分割单词,这将返回单词数组。然后,您可以在此数组上循环查找与您的单词完全匹配的内容:

const str = 'I have a car and I need to take good care of this car';
const words = str.split(' ');
words.forEach(function(word){
    if (word==="car"){
        console.log("found car")
    }
})

编辑:请注意,如果您的句子中包含逗号或其他标点符号,则也需要对这些标记进行拆分。

答案 4 :(得分:0)

let string = $('.sentence').text();

现在匹配您要查找的字符串。要找到完全匹配的内容,您可以编写如下

let count =  string.match(/\bcar\b/g);
count = count? count.length : 0;  
console.log(count);
相关问题