我正在开发一个小型应用程序,需要用其值替换字符串中的.NET样式“变量”。下面是一个示例:
更换:
“ {D} / {MM} / {YYYY}”
带有:
“ 2009年12月31日”
我决定使用Regex查找出现的“ {var}”,但是我不太确定如何正确处理它。
最佳答案
如果您要使用正则表达式,并且有一个已知的模式,那么它不会比使用Match Evaluator方法而不是多次调用replace更为简单:
void Main() // run this in LinqPad
{
string text = "I was here on {D}/{MMM}/{YYYY}.";
string result = Regex.Replace(text, "{[a-zA-Z]+}", ReplaceMatched);
Console.WriteLine(result);
}
private string ReplaceMatched(Match match)
{
if( match.Success )
{
switch( match.Value )
{
case "{D}":
return DateTime.Now.Day.ToString();
case "{YYYY}":
return DateTime.Now.Year.ToString();
default:
break;
}
}
// note, early return for matched items.
Console.WriteLine("Warning: Unrecognized token: '" + match.Value + "'");
return match.Value;
}
给出结果
警告:无法识别的令牌:“ {MMM}”
我在2009年2月{MMM}登陆。
显然,它并没有完全实现。
检出LinqPad和正则表达式工具,例如Expresso