【问题标题】:Format string by CultureInfo通过 CultureInfo 格式化字符串
【发布时间】:2010-11-18 23:04:42
【问题描述】:

我想显示英镑符号和格式 0.00 即 £45.00, £4.10 。我正在使用以下语句:

<td style="text-align:center"><%# Convert.ToString(Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets")), new System.Globalization.CultureInfo("en-GB")) %></td>

但它不起作用。有什么问题。

谁能帮帮我???

【问题讨论】:

    标签: c# asp.net cultureinfo


    【解决方案1】:

    尝试指定准确的货币格式

    String.Format(...CultureInfo("en-GB"), "{0:C}"....
    

    【讨论】:

      【解决方案2】:

      怎么样

      <%# (Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets"))).ToString("C", New System.Globalization.CultureInfo("en-GB")) %>
      

      【讨论】:

        【解决方案3】:

        这应该可行:

        <td style="text-align:center">
        <%# String.Format( new System.Globalization.CultureInfo("en-GB"), "{0:c}", Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets")) %>
        </td>
        

        【讨论】:

          【解决方案4】:

          使用Currency 标准格式字符串以及采用格式提供程序的string.Format 方法:

          string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", amount)
          

          CultureInfo 可以充当格式提供者,还可以为您提供文化的正确货币符号。

          然后您的示例将读取(为了便于阅读而间隔):

          <td style="text-align:center">
              <%# string.Format(new System.Globalization.CultureInfo("en-GB"), 
                                "{0:C}", 
                                Convert.ToSingle(Eval("tourOurPrice")) 
                                       / Convert.ToInt32(Eval("noOfTickets")))
              %>
          </td>
          

          【讨论】:

          • 这真的有效吗?您正在将文化应用于字符串,我认为这不会产生任何影响。
          • 这是我试过的:string foo = String.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", Convert.ToString(3.01)) ;
          • @Joe:啊,我明白你现在指的是什么了。我已经更新了我的答案以更正它。
          【解决方案5】:

          我想添加一个额外的相关答案,以展示如何在 string.Format() 或 StringBuffer.AppendFormat() 中使用克隆的 CultureInfo 对象。不过,我需要为我的雇主的风格指南格式化 AM/PM 指示符,而不是货币。这是我所做的:

          var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
          culture.DateTimeFormat.AMDesignator = "a.m.";
          culture.DateTimeFormat.PMDesignator = "p.m.";
          ....
          var msg = new StringBuilder();
          msg.AppendFormat(culture,"Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);
          

          你可以用 string.Format() 做同样的事情:

          string strMsg = string.Format(culture, "Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-19
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            相关资源
            最近更新 更多