【问题标题】:How to use C language format specifiers in C#如何在 C# 中使用 C 语言格式说明符
【发布时间】:2015-10-30 09:12:54
【问题描述】:

将此视为我的输入:

number : 123
pattern: %5d

Output in C after string formatting : "  123"

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

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

【问题讨论】:

  • 您必须解析字符串(正则表达式可能有助于特定的已知格式)并自己重新格式化。
  • 我可以知道我必须指定的模式吗?
  • @ramkumar 那是你的工作,想出匹配每个 C 字符串格式说明符的正则表达式 :)

标签: c# .net format-specifiers


【解决方案1】:

正确的 C# 语法是:

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

pads the number by 5 positions(空格)。如果你想将一个转换成另一个,你可以使用正则表达式。

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

$"{number,5}"

【讨论】:

  • 更多信息请访问Standard Numeric Format Strings
  • 确实如此。添加了@Alex。谢谢
  • 感谢您的回答@patrick。就我而言,输入模式将采用 C 语言格式(即,如 %3d、%f 等)。我想在 C# 中获得相同的功能(C 语言格式)。
  • 这将需要解析器将每个 C 格式说明符解析为 C#。我认为这是一项无休止的工作,而且对 SO 来说太宽泛了。 (当我读到它时,这实际上不是你的问题)
【解决方案2】:

您可以在不使用模式或正则表达式的情况下实现此行为。请改用 .NET 框架 string.PadLeft() 方法:

int number = 123;
var result = number.ToString().PadLeft(5); 

【讨论】:

    【解决方案3】:

    我认为您可以使用自定义数字格式字符串。可以在这里找到:Custom Numeric Format Strings

    我会使用“#”自定义格式说明符。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 2020-12-14
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多