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



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

最佳答案

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

08-25 17:27