8

入力が「1234567」の場合、出力は「12,34,567」になるはずです。

次のコードを書きましたが、期待される出力が得られません。

 CultureInfo hindi = new CultureInfo("hi-IN");
 string text = string.Format(hindi, "{0:c}", fare);
 return text;

誰かがこれを行う方法を教えてもらえますか?

4

4 に答える 4

20

、、、またはfareのいずれかである場合、次の期待される出力が得られます。intlongdecimalfloatdouble

₹ 12,34,567.00.

あなたfareは実際にはstring;であると思います。文字列は によってフォーマットされていませんstring.Format: それらはすでに文字列です:フォーマットする値はありません. したがって、最初に解析し(適切なもの、おそらく不変の10進数解析を使用して)、解析された値をフォーマットします。例えば:

// here we assume that `fare` is actually a `string`
string fare = "1234567";
decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
CultureInfo hindi = new CultureInfo("hi-IN");
string text = string.Format(hindi, "{0:c}", parsed);

コメントを編集します。通貨記号や小数部分を除いた書式設定された値だけを取得するには:

string text = string.Format(hindi, "{0:#,#}", value);
于 2012-09-19T10:11:15.347 に答える
1

これを試して

int myvalue = 123456789;
Console.WriteLine(myvalue.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN")));//output;- 12,34,56,789
于 2018-10-16T15:42:04.933 に答える
0

小数点以下の桁数がない場合は String.Format("0:C0") 。

上記の私のコメントによると、numberformatinfo を複製し、通貨記号プロパティを空の文字列に設定することで、目的を達成できます。

例はここにあります - ページの下部を見てください

編集:これはあなたの質問のためにフォーマットされた上記のリンクされた投稿です:

var cultureInfo = new CultureInfo("hi-IN")
var numberFormatInfo = (NumberFormatInfo)cultureInfo.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "";

var price = 1234567;
var formattedPrice = price.ToString("0:C0", numberFormatInfo); // Output: "12,34,567"
于 2012-09-19T10:31:42.107 に答える