你好,我想知道是否有人可以帮忙,我想在字符串中搜索一个单词,并控制台记录该单词在字符串中出现的次数,但是我只希望它返回整个单词的计数找到,因此目前下面的示例将返回“ 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);
答案 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);