【问题标题】:extract city name from a string with node从带有节点的字符串中提取城市名称
【发布时间】:2018-06-20 12:54:04
【问题描述】:

我的脚本从用户那里收到一个包含城市名称或多个的字符串,我想提取城市名称。我当前的代码根据空格将字符串拆分为单词,但如果城市名称是两个单词,则不起作用。 我可以有一个预期的城市名称数组,并且我想将字符串的城市名称与该数组进行匹配,有没有可能的方法而不必使用神经语言处理技术??

例子

var cities = ['Cairo', 'Dubai', 'San Francisco']
// possible strings
var user_string = 'traveling to Cairo'  // result ['Cairo']
var user_string = 'will leave San Francisco to Dubai late'   // result ['San Francisco', 'Dubai']

【问题讨论】:

    标签: javascript arrays node.js string


    【解决方案1】:

    创建RegExp 并使用match

    user_string.match(new RegExp( cities.join("|"), "gi" ) )
    

    演示

    var fnMatches = ( cities, str ) => str.match(new RegExp( cities.join("|"), "gi" ) );
    var cities = ['Cairo', 'Dubai', 'San Francisco'];
    console.log( fnMatches( cities, "traveling to Cairo" ) );
    console.log( fnMatches( cities, "will leave San Francisco to Dubai late" ) );

    【讨论】:

    • 这很好,但它只返回第一个城市(第一场比赛)
    • @AhmedAtalla 是的,我注意到了这一点并且也修复了。请检查更新。
    【解决方案2】:

    你应该使用正则表达式来匹配城市

    for(i=0; i < cities.length; i++) {
      if(user_string.match(new RegExp(cities[i], 'i'))){
        console.log(cities[i]);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 2021-06-07
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多