ray*_*ran 11 c# regex duplicates match
在我的MatchCollection中,我获得相同的匹配.像这样:
string text = @"match match match";
Regex R = new Regex("match");
MatchCollection M = R.Matches(text);
Run Code Online (Sandbox Code Playgroud)
如何删除重复的匹配,是否是最快的方式?
假设此处的"重复"表示匹配包含完全相同的字符串.
Ωme*_*Man 15
如果您使用.Net 3.5及更高版本,则可以使用linq删除匹配项的副本.
string data = "abc match match abc";
Console.WriteLine(string.Join(", ",
Regex.Matches(data, @"([^\s]+)")
.OfType<Match>()
.Select (m => m.Groups[0].Value)
.Distinct()
));
// Outputs abc, match
Run Code Online (Sandbox Code Playgroud)
对于.Net 2及之前,将其放入hastable然后提取字符串:
string data = "abc match match abc";
MatchCollection mc = Regex.Matches(data, @"[^\s]+");
Hashtable hash = new Hashtable();
foreach (Match mt in mc)
{
string foundMatch = mt.ToString();
if (hash.Contains(foundMatch) == false)
hash.Add(foundMatch, string.Empty);
}
// Outputs abc and match.
foreach (DictionaryEntry element in hash)
Console.WriteLine (element.Key);
Run Code Online (Sandbox Code Playgroud)