首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串中的单词与列表中的单词精确匹配?

如何将字符串中的单词与列表中的单词精确匹配?
EN

Stack Overflow用户
提问于 2019-07-21 23:52:06
回答 3查看 52关注 0票数 0

我已经玩了几天精灵宝可梦API了。

我有一个列出了所有精灵宝可梦的数组,还有一个类似于'<@user_id pidgeotto>‘的字符串。

我想根据一个数组检查这个字符串,并获得确切的名称

我的问题是,我也会得到一些东西,比如pidgeot。

如何才能将数组与字符串完全匹配,并且只记录一个名称?

代码语言:javascript
复制
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];

let y = '<@user_id> pidgeotto';

function handleMessage(message) {
  for (let i = 0; i <= message.length; i++) {
    if (y.includes(message[i])) {
      console.log(message[i])
    }
  }
}

handleMessage(pokemonArray);

没有错误,只是没有得到我想要的结果。

EN

回答 3

Stack Overflow用户

发布于 2019-07-21 23:57:53

在空格处拆分y字符串,并使用===比较查看第二部分是否准确

代码语言:javascript
复制
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];

let y = '<@user_id> pidgeotto';
let yName = y.split(' ')[1];

function handleMessage(message) {
  for (let i = 0; i <= message.length; i++) {
    if (message[i] === yName ) {
      console.log(message[i])
    }
  }
}

handleMessage(pokemonArray);

票数 2
EN

Stack Overflow用户

发布于 2019-07-22 00:06:48

您可以这样做,以避免PokemonArray中的第一个元素

代码语言:javascript
复制
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];

let y = '<@user_id> pidgeotto';

function handleMessage(message) {
    for(let i = 0; i <= message.length; i++) {
        let splitedY = y.split(message[i])
        if(splitedY.length > 1 && splitedY[1] !== "") {
           console.log(message[i])
        }
    }
}

handleMessage(pokemonArray);

票数 0
EN

Stack Overflow用户

发布于 2019-07-22 03:29:01

下面是这方面的一个代码行:

代码语言:javascript
复制
const match = pokemonArray.find(pokemon => new RegExp(`\\b${pokemon}\\b`, `i`).test(y));

只需使用array find方法并使用regex匹配字符串即可。希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57134754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档