当前位置:  开发笔记 > 编程语言 > 正文

C#将参数命名为替换为参数值的字符串

如何解决《C#将参数命名为替换为参数值的字符串》经验,为你挑选了2个好方法。

我希望以一种良好的性能方式(我希望)将我的字符串中的命名参数替换为代码中的命名参数,例如,我的字符串:

"Hi {name}, do you like milk?"

我怎么能用代码,正则表达式替换{name}?贵吗?你推荐哪种方式?

他们如何将示例NHibernates HQL替换为:my_param为用户定义的值?或者在我更喜欢的ASP.NET(MVC)路由中,"{controller}/{action}",new {controller ="Hello",...}?



1> Konrad Rudol..:

你确认正则表达式太贵吗?

正则表达式的成本被夸大了.对于这样一个简单的模式,性能会非常好,实际上可能只比直接搜索和替换略好.另外,Compiled在构造正则表达式时,您是否尝试过标记?

那就是说,你能不能用最简单的方式,即Replace

string varname = "name";
string pattern = "{" + varname + "}";
Console.WriteLine("Hi {name}".Replace(pattern, "Mike"));


@Jon:谢谢.为什么在你有Jon的时候使用编译器?;-)

2> Marc Gravell..:

正则表达式当然是一个可行的选择,尤其是MatchEvaluator:

    Regex re = new Regex(@"\{(\w*?)\}", RegexOptions.Compiled); // store this...

    string input = "Hi {name}, do you like {food}?";

    Dictionary vals = new Dictionary();
    vals.Add("name", "Fred");
    vals.Add("food", "milk");

    string q = re.Replace(input, delegate(Match match)
    {
        string key = match.Groups[1].Value;
        return vals[key];
    });

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有