【问题标题】:Search string for exact word, return number of matches搜索字符串以查找确切的单词,返回匹配数
【发布时间】:2020-05-06 14:48:22
【问题描述】:

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

【问题讨论】:

标签: javascript jquery


【解决方案1】:

您可以使用正则表达式并使用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>

【讨论】:

    【解决方案2】:

    绝对有办法,使用匹配:

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

    通过使用单词边界(\b),返回值为 2。不使用它(即/car/),返回值为 3,因为该字符串中的单词 care。

    【讨论】:

    • 如果没有匹配则抛出错误
    • 没有匹配返回null。如果在非字符串上调用 match 会出错,但这完全超出了这个问题 imo 的范围
    • 试试这个"".match(/a/g)
    【解决方案3】:

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

    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】:

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

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

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

      所以,计算它们:

      const count = matches ? matches.length : 0
      

      【讨论】:

        【解决方案5】:
        let string = $('.sentence').text();
        

        现在匹配您要查找的字符串。要找到完全匹配,您可以像下面这样写

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 2019-11-03
          • 1970-01-01
          • 2011-10-18
          • 1970-01-01
          • 2016-11-16
          • 1970-01-01
          相关资源
          最近更新 更多