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

标签 c# regex performance string named-parameters

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

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

如何用代码、正则表达式替换 {name}?要贵吗?您推荐哪种方式?

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

最佳答案

您确认正则表达式太昂贵了吗?

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

也就是说,您不能只使用最简单的方法,即 Replace 吗?

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

关于C# 将参数命名为替换为参数值的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/379328/

相关文章:

c# - 从 XML 文件导入图像

c# - 抓取/模拟浏览帮助

c# - NUnit 没有为我的单元测试项目发布 .dll

mysql - 从 bash 获取特定文件名

python - 在 Python 中,在一个字符串中,用一个空格删除多个空格,如果它不是前导多个空格

c# - 反射测试未显示预期数字

r - 提高大型矩阵中加权 Jaccard 计算的性能

c# - 哈希(MD5、SHA1、SHA256、SHA384、SHA512)——为什么不能从哈希中取回值?

正则表达式在捕获组后替换为数字?

python - 如何高效的判断一个元素是否在一个引用列表的范围内,并获取索引引用列表?