我有以下代码从输入文件中提取特定标记
string sLine = File.ReadAllText(ituffFile);
Regex rxp = new Regex(@"2_tname_(?<token>\S+)", RegexOptions.Compiled);
MatchCollection rxpMatches = rxp.Matches(sLine);
现在我想转换MatchCollection,它包含元素,我正在寻找一个HashSet。
实现这一目标的最快方法是什么?
以下是最好的方法吗?
HashSet<string> vTnames = new HashSet<string>();
foreach (Match mtch in rxpMatches)
{
vTnames.Add(mtch.Groups["token"].Value);
}
答案 0 :(得分:2)
是的,根据我的说法,你的代码是完美的,因为MatchCollection和HastSet似乎没有任何合适的强制转换。所以你跟随使用foreach循环的方式是完美的..
答案 1 :(得分:1)
如果您正在寻找Linq-to-objects表达式:
Regex rxp = new Regex(@"2_tname_(?<token>\S+)", RegexOptions.Compiled);
MatchCollection rxpMatches = rxp.Matches(sLine);
HashSet<string> vTnames =
rxpMatches.Cast<Match> ().Aggregate (
new HashSet<string> (),
(set, m) => {set.Add (m.Groups["token"].Value); return set;});
当然,foreach解决方案要快一点。