找到包含返回匹配的包含

问题描述:

我需要返回比较文本块和字符串列表时发现的所有匹配项。找到包含返回匹配的包含

if(myList.Any(myText.Contains)) 

我可以验证是否存在与上面的匹配,但我不知道如何去更进一步并返回匹配的字符串。我查看了Intersect,但据我了解,它只能用于两种相同类型。

的样本数据:

myList[] = { "City of London", "City of Edinburgh" }; etc 
myText = "I am applying for the position in the City of London"; 

这里期望的结果将是“伦敦金融城”,或者通过设定所产生的匹配作为一个字符串,或返回myList中的索引。任何帮助非常感谢,谢谢!

+1

“伦敦市”不是“我在伦敦申请的职位” – Agalo

+0

重新@Agalo,我已经编辑我的问题,以反映,由于确定性的匹配。 – Penta

这应该工作。

 List<string> myList = new List<string>(); 
     myList.Add("City of London"); 
     myList.Add("City of Edinburgh"); 
     string myText = "I am applying for the position in the City of London"; 

     var result = myList.Where(x => myText.Contains(x)).ToList(); 
+0

非常感谢您的帮助,似乎也能做到这一点。为了检查结果作为一个字符串,我添加了:string match = string.Join(“,”,result.ToArray()); – Penta

试试这个:

string result= myList.FindAll(x=> myText.IndexOf(x)>-1); 

var matches = myList.Where(a => myText.IndexOf(a) > 0).ToList();