从文章内容中计算内联c#代码
本文关键字:计算 代码 文章 | 更新日期: 2023-09-27 18:07:30
我一直在这个圈子里,需要一些帮助。我有一个评估代码的方法,所以如果我通过这个Eval("DateTime.Now.Year - 1986")
返回29,它的工作很好,这意味着我可以在我的帖子中有内联代码,在运行时动态评估(这可能会出现一些安全问题,但在其他时间),这是我试图处理的示例字符串:string inStr = "this year is [EVAL]DateTime.Now.Year[/EVAL] and it has been [EVAL]DateTime.Now.Year - 1986[/EVAL] years since 1986";
我需要一个正则表达式,它将取代所有[EVAL]实例并返回全文与评估结果。有人知道吗?
你想要一个正则表达式,你可以有一个正则表达式…
string inStr = "this year is [EVAL]DateTime.Now.Year[/EVAL] and it has been [EVAL]DateTime.Now.Year - 1986[/EVAL] years since 1986";
var rx = new Regex(@"('[EVAL'])(.*?)('[/EVAL])");
string outStr = rx.Replace(inStr, RegexReplacer);
public static string RegexReplacer(Match match)
{
return Eval(match.Groups[2].Value);
}
或根据Eval
的返回类型:
public static string RegexReplacer(Match match)
{
object obj = Eval(match.Groups[2].Value);
return obj != null ? obj.ToString() : string.Empty;
}
捕获组#2是(.*?)
。注意使用延迟量词.*?
,否则捕获将是[EVAL]DateTime.Now.Year[/EVAL] and it has been [EVAL]DateTime.Now.Year - 1986[/EVAL]