【问题标题】:Changing a Int to a String then Formatting the String [duplicate]将 Int 更改为字符串然后格式化字符串 [重复]
【发布时间】:2018-02-07 00:42:15
【问题描述】:

<p class="card"> Credit Limit: <b style="color: #00e500 ;"> $@Model.CreditLimit.ToString().ToLocaleString()</b> </p>

我正在使用 ToString() 将 Int 更改为 String 然后我尝试使用 ToLocaleString() 格式化我得到的数字。该数字如下所示:80567。我正在尝试将其格式化为如下所示:80,567。

我得到的错误是“字符串不包含“ToLocaleString”的定义

想法?

编辑:将关闭此问题。找到我的错误所在的位置。如果您对该主题有任何疑问,请参考此链接:Link to StackOverFlow issue

【问题讨论】:

  • toLocaleString 可用于其他语言,而不是 C#,除非您实现扩展方法。
  • 另外,我不认为 ToLocaleString 将是一个字符串上的方法,而是一个 int 因为它甚至会对像“hello world!”这样的字符串做什么?
  • @dominic-gozza 您能否将答案标记为已接受或告诉我们缺少什么?

标签: c# html string visual-studio int


【解决方案1】:

我看到您想显示金额,您应该为此使用货币 NumberFormatInfo。首先获取当前的 CultureInfo 或为特定的语言国家创建它:

var culture = Thread.CurrentThread.CurrentCulture;
// or
var culture = new CultureInfo("en-US"); 

然后用它来格式化你的号码:

var creditLimit = 100;
var creditLimitFormatted = creditLimit.ToString("c", culture);

“c”代表“货币”,您可以在NumberFormatInfo的文档中查看其他可能的选项。

Formatting Numeric Data for a Specific Culture

【讨论】:

    【解决方案2】:

    @Model.CreditLimit - 这是整数

    @Model.CreditLimit.ToString() - 这是一个字符串

    现在您正在尝试执行ToLocaleString(),这显然是错误

    "字符串不包含"ToLocaleString"的定义

    要执行您想要归档的操作,请尝试以下解决方案:

    String.Format("{0:n}", @Model.CreditLimit); //输出:80,567.00

    string.Format("{0:n0}", @Model.CreditLimit); // 输出:80567

    【讨论】:

      【解决方案3】:

      这是因为int (Int32) 类是不可格式化的,也就是说,它的表示不依赖于文化,例如。你必须推出你的格式化代码。

      【讨论】:

        【解决方案4】:

        article 很好地概述了可用的不同格式类型。听起来你想要Numeric Format Specifier。你会这样使用它

        int intValue = 123456789;
        Console.WriteLine(intValue.ToString("N1", CultureInfo.InvariantCulture));
        // Displays 123,456,789.0 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-19
          • 1970-01-01
          • 1970-01-01
          • 2012-05-24
          • 1970-01-01
          • 1970-01-01
          • 2019-05-03
          • 2020-12-05
          相关资源
          最近更新 更多