我和我的同事使用不同版本的 VisualStudio。他使用了内插字符串,但我无法构建解决方案,不得不将它们全部转换为字符串格式。
现在我认为这可能是正则表达式的好练习。
那么如何转换这个:
$"alpha: {alphaID}, betaValue: {beta.Value}"
对此:
string.Format("alpha: {0}, betaValue: {1}", alphaID, beta.Value)
现在变量的数量可以变化(比如 1 - 20,但应该是通用的)
我想出了这个正则表达式来匹配第一个变量
\$.*?{(\w+)}
但我不知道如何重复美元符号后的部分,所以我可以重复结果。
最佳答案
Regex.Replace
有一个带有函数的重载,称为 MatchEvaluator
。你可以这样使用它;
var paramNumber = 0;
var idNames = new List<string>();
myCSharpString = Regex.Replace(myCSharpString, match => {
// remember the id inside brackets;
idNames.Add(match.ToString());
// return "0", then "1", etc.
return (paramNumber++).ToString();
});
在此过程结束时,您的字符串 "this is {foo} not {bar}"
将被替换为 "this is {0} not {1}"
并且您将拥有一个包含 { "foo", "bar"}
的列表,您可以使用它来组装参数列表。
关于c# - 使用正则表达式将插值字符串转换为 string.Format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286392/