有没有办法通过.Net aframework(或有人写过类似的东西)在传递字符串和字典对象时获取匹配数组?
首先一些背景
我需要
我有运动队的 csv 文件,我将其加载到字典对象中,例如...
Team, Variants
Manchester United, Manchester United
Manchester United, manutd
Manchester United, man utd
Manchester United, manchester utd
Manchester United, mufc
Aston Villa, Aston Villa
Aston Villa, avfc
Newcastle United, Newcastle United
Newcastle United, toon army
现在我想看看一个字符串是否包含该字典中的任何短语。
一个示例字符串...
"I wonder if man utd, aston villa andthe toon army will exist in this string"
现在我要返回匹配的 n 个字符串数组,示例输出如下:
["Manchester United","Aston Villa", "Newcastle United"]
我目前正在使用正则表达式来拆分字符串中的单词。然后我循环遍历字符串中的每个单词并根据字典对其进行测试(这里需要注意的是代码确实有效,但只有单个单词而不是短语,这是由于正则表达式)
public static List<string> CheckStringWithDictionary(string input, Dictionary<string, string> dic, int minimumLength)
{
List<string>lst = new List<string>();
string myValue = "";
foreach (Match match in RegexSplitStringToArray(input, minimumLength))
{
if (dic.TryGetValue(match.Value, out myValue))
lst.Add(myValue);
}
return lst;
}
public static MatchCollection RegexSplitStringToArray(string input, int minLength)
{
Regex csvSplit = new Regex("(\\w{3,})", RegexOptions.Compiled);
return csvSplit.Matches(input);
}
循环字符串而不是字典的原因是因为字典将包含超过 10,000 多个项目,因此在循环遍历它方面效率非常低。
感谢您到目前为止的耐心,现在问题...
有没有办法通过.Net aframework(或有人写过类似的东西)在传递字符串和字典对象时获取匹配数组?
谢谢大家