我正在使用带有MatchEvaluator委托的正则表达式来处理格式字符串,例如“时间:%t,字节:%b”将用时间戳替换“%t” ,用字节数替换“%b”。不用说,还有很多其他选择!
为此,我使用:
Regex regex = new Regex("%((?<BytesCompleted>b)|(?<BytesRemaining>B)|(?<TimeStamp>t))");
string s = "%bhello%t(HH:MM:SS)%P";
string r = regex.Replace(s, new MatchEvaluator(ReplaceMatch));
和
string ReplaceMatch(Match m)
{
... Handle the match replacement.
}
如果我可以在委托中使用正则表达式组名称(甚至是数字,我没那么挑剔)而不是与原始匹配进行比较以找出这是哪个匹配,那将是一件好事:
string ReplaceMatch(Match m)
{
...
case "%t":
...
case "%b";
...
}
很丑;我想用
string ReplaceMatch(Match m)
{
...
case "BytesCompleted":
...
case "TimeStamp":
...
}
通过调试器或谷歌,我看不到任何明显的东西。有任何想法吗?