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