在javascript中查找和区分单词[关闭]

Posted

技术标签:

【中文标题】在javascript中查找和区分单词[关闭]【英文标题】:find and differentiate words in javascript [closed] 【发布时间】:2021-06-29 14:48:08 【问题描述】:

我的 javascript 有问题。基本上我有一个文本:

const text = 'Hello Teddy Bear, enjoy your life'. 

我有一个包含两个元素的数组

const array = ['Teddy', 'Teddy Bear']; 

我只需要从这个数组中过滤“泰迪熊”。

我正在尝试使用 javascript 中的“包含”。但他找不到区别,因为文中也有“泰迪”..

有谁知道我该如何解决?谢谢

【问题讨论】:

使用 .replace() 函数 嗯..你能举个例子吗? 如果是最长的匹配(子)字符串,其实很简单。 1st)sort 数组按其每个字符串项length 属性降序排列。 2nd)迭代数组......对于每个字符串项尝试它是否包含在给定文本中。停止使用第一个匹配的字符串项进行迭代。根本不需要正则表达式。 【参考方案1】:

如果它是可能的最长匹配(子)字符串,因此是最具体的,那么这个任务实际上可以很容易地解决。

    sort 数组按其每个字符串项的 length 属性降序排列。 迭代数组...对于每个字符串项,尝试它是否包含在给定文本中。 停止迭代第一个匹配的字符串项。

根本不需要正则表达式。

function getMostSpecificMatch(text, matchList) 
  let match;

  matchList
    .sort((a, b) => b.length - a.length)
    .some(str => 
      const doesMatch = text.includes(str);
      if (doesMatch) 

        match = str;
      
      return doesMatch;
    );

  return match;


const sampleText = 'Hello Teddy Bear, enjoy your life';
const sampleList = ['Teddy', 'Teddy Bear'];

console.log(
  'randomly ordered list of possible matches ...',
  sampleList
);
console.log(
  "possible matches in descending order of each item's length ...",
  sampleList.sort((a, b) => b.length - a.length)
);
console.log( sampleText );

console.log(
  'most specific match ...',
  getMostSpecificMatch(sampleText, sampleList)
);
.as-console-wrapper  min-height: 100%!important; top: 0; 

【讨论】:

@ThadeuMunhózCesário ... 关于上述方法还有什么问题吗? 不,彼得,非常感谢您的帮助!我将利用您的代码并针对我的情况进行一些调整。非常感谢!

以上是关于在javascript中查找和区分单词[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在sql表条目中查找重复单词[关闭]

JavaScript正则表达式匹配不区分大小写的单词? [复制]

在文件中查找特定单词并删除其行[关闭]

Javascript在字符串中查找单词的索引(不是单词的一部分)

统计单词数

2011统计单词数