首页 > 解决方案 > 如何在javascript中按单词序列匹配两个字符串?

问题描述

需要找到与给定字符串最匹配的字符串。

list = ['Mr. Adam Smith Junior', 'Anna Smith Jr.', 'Adam Jhon Smith', 'Smith Adam'];
str = 'Adam Smith Jr.';

// output: 'Mr. Adam Smith Junior'

我尝试过对单词进行标记,对于列表中的每个项目,它都与 2tokens(Adam/Smith/Jr.) 匹配。但我的预期输出是列表 [0]。所以我需要一个解决方案来通过最匹配的单词序列找到匹配的字符串。

标签: javascriptstring-matching

解决方案


// Your code request - Updated code.
var list = ['Mr. Adam Smith Junior', 'Anna Smith Jr.', 'Adam Jhon Smith', 'Smith Adam'];
var str = 'Adam Smith Jr.';

// Updated code.
str = str.split(' ');
var i = 0, j = 0;
var matched = [];

// First loop for your `list` variable array to go through each string.
while(i < str.length){
    // Second loop for your `str` variable to match each part of string with your `list` variable's each string.    
    for(j=0;j < list.length;j++){      
        var match = new RegExp( str[i], 'g' );  
            if(list[j].match(match)){
            // Find exact match - Your code goes here.
            if(!matched.includes(list[j])){
                matched.push(list[j]);
            }

          }
        }
  i++;
}

// Your result of find the all matched values from `list` variable.
console.log(matched);

推荐阅读