如何在C#中使用C语言格式说明符

3

请将以下内容视为我的输入:

number : 123
pattern: %5d

Output in C after string formatting : "  123"

注意: 前两个位置会显示空格。

准确地说,我的输入模式将采用C语言格式,我希望在C#中获得这些格式的功能(结果应该与C语言相同)。


1
你需要解析字符串(正则表达式可能有助于特定已知格式),并自行重新格式化它。 - Dai
我可以知道我需要指定的模式吗? - Ramkumar
@ramkumar,那是你的工作,想出匹配每个C字符串格式说明符的正则表达式 :) - Dai
2
这可能会有所帮助:http://www.codeproject.com/Articles/19274/A-printf-implementation-in-C - Dennis
3个回答

4

这个的正确的 C# 语法是:

string.Format("{0,5}", number)

它将数字(空格)填充了5个位置。如果您想将其中一个转换为另一个,可以使用正则表达式。

或者使用C# 6字符串插值语法:

$"{number,5}"

1
更多信息请参考标准数字格式字符串 - Alex
确实。已添加@Alex。谢谢。 - Patrick Hofman
1
感谢您的回答@patrick。在我的情况下,输入模式将采用C语言格式(即像%3d,%f等)。我希望在C#中获得相同的功能(C语言格式化)。 - Ramkumar
这将需要一个解析器来解析每个C格式说明符到C#。我认为这是一项无休止的工作,对于SO来说太过广泛了。(而且实际上这不是你的问题,我读错了) - Patrick Hofman

1
你可以不使用模式或正则表达式来实现此行为。相反,使用.NET框架的string.PadLeft()方法即可:
int number = 123;
var result = number.ToString().PadLeft(5); 

0

我认为你可以使用自定义数字格式字符串。可以在这里找到:自定义数字格式字符串

我会选择"#"自定义格式说明符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接