从包含节点的字符串中提取城市名称

时间:2018-01-11 08:47:20

标签: javascript arrays node.js string

我的脚本从用户收到一个包含城市名称或多个的字符串,我想提取城市名称。我当前的代码将字符串拆分为基于空格的单词,但如果城市名称是两个不起作用的单词。 我可以有一系列预期的城市名称,我希望将该字符串的城市名称与该数组相匹配,是否有任何可能的方法而不必使用神经语言处理技术?

实施例

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']

2 个答案:

答案 0 :(得分:8)

创建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" ) );

答案 1 :(得分:0)

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

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