有没有办法在 C#/.NET 2.0 中将 C 格式字符串转换为 C# 格式字符串?

cha*_*r m 5 c c# string-formatting

所以我想像这样转换字符串:

"Bloke %s drank %5.2f litres of booze and ate %d bananas"
Run Code Online (Sandbox Code Playgroud)

与 .Format 或 .AppendFormat 方法等效的 C#

"Bloke {0} drank {1,5:f2} litres of booze and ate {2} bananas"
Run Code Online (Sandbox Code Playgroud)

抱歉,我不确定 C# 版本是否正确,但你明白了。解决方案不必是完美的,但可以涵盖基本情况。

谢谢&BR-马蒂

在我的另一个问题如何编写 C# 正则表达式模式来匹配基本 printf 格式字符串(如“%5.2f”)中得到了回答?

Joe*_*ton 1

你也许可以只使用StringBuilder.Replace().

StringBuilder cString = new StringBuilder("Bloke %s drank %5.2f litres of booze and ate %d bananas");
cString.Replace("%s","{0}");
cString.Replace("%5.2f", "1,5:f2"); // I am unsure of this format specifier
cString.Replace("%d", "{2}");

string newString = String.Format(cString.ToString(), var1, var2, var3);
Run Code Online (Sandbox Code Playgroud)

可以想象,您可以添加类似的内容作为 String 的扩展方法,但我认为您最大的问题将是特殊格式的说明符。如果这在这方面很重要,您可能需要设计一个正则表达式来捕获这些并有意义地执行替换。

  • -1:这是针对无法硬编码的问题的硬编码解决方案。可行的解决方案会比这复杂得多。 (4认同)