web-dev-qa-db-ja.com

CultureInfoによる文字列の書式設定

ポンド記号と形式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>

しかし、それは機能していません。何が問題ですか。

誰でも助けてもらえますか???

37
Waheed

通貨 標準フォーマット文字列と、フォーマットプロバイダーを取る 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>
85
adrianbanks

どう?

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

正確な通貨形式を指定してみてください

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

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);
1
Mark

これは動作するはずです:

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