【问题标题】:String.Format Doesn't Format a StringString.Format 不格式化字符串
【发布时间】:2009-04-20 18:44:54
【问题描述】:

似乎 String.Format 不会将字符串格式化为输入。我做错了什么,还是这只是本机行为?

输入:0.37

这不起作用。

string x = String.Format("{0:P}", myString)

输出:0.37

确实如此。

string x = String.Format("{0:P}", Convert.ToDecimal(myString))

输出:37.00 %

【问题讨论】:

    标签: .net string.format


    【解决方案1】:

    我相信这是“复合格式”的预期行为。

    您的第一个示例是尝试将数字格式规则应用于字符串。您的第二个示例是尝试将数字格式规则应用于可以具有小数位的数字。

    更多信息请参见this article on MSDN

    【讨论】:

      【解决方案2】:

      您尝试应用的格式选项仅适用于数字。 .NET 中没有智能字符串的概念,CLR 在其中检查字符串的类型。

      【讨论】:

        【解决方案3】:

        我做错了什么,还是这只是本机行为?

        这是本机行为。解释字符串输入基本上不是Format 的工作。 Format 假设用户提供了正确的数据——在你的例子中,是 numeric 数据。字符串不是数字,即使它表示一个数字(这是 CS 中值/语义与其表示/语法之间最重要的区别!)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-20
          相关资源
          最近更新 更多