C# Named parameters to a string that replace to the parameter values

mike picture mike · Dec 18, 2008 · Viewed 18.4k times · Source

I want in a good performance way (I hope) replace a named parameter in my string to a named parameter from code, example, my string:

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

How could I replace the {name} by code, Regular expressions? To expensive? Which way do you recommend?

How do they in example NHibernates HQL to replace :my_param to the user defined value? Or in ASP.NET (MVC) Routing that I like better, "{controller}/{action}", new { controller = "Hello", ... }?

Answer

Konrad Rudolph picture Konrad Rudolph · Dec 18, 2008

Have you confirmed that regular expressions are too expensive?

The cost of regular expressions is greatly exaggerated. For such a simple pattern performance will be quite good, probably only slightly less good than direct search-and-replace, in fact. Also, have you experimented with the Compiled flag when constructing the regular expression?

That said, can't you just use the simplest way, i.e. Replace?

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