0

重複の可能性:
.NET String.Format() は、数字の千の位にカンマを追加します

プレゼンテーション層の数字にコンマを追加しようとしていますが、「,」で結合するために、3 文字ごとに数字をキャストしてから分割する必要があります。

だから私はこのような文字列を持っている場合

546546555

望ましい出力:

546,546,555

また、数値が長くなったり短くなったりする場合もあります。

254654

望ましい出力:

254,654

このように分割してカンマで結合することはできますか?

タンク!

編集:

皆さんこんにちは、

どうもありがとうございました。

この投稿に追加するために、SQL でこれを行う方法も見つけました。

SUBSTRING(CONVERT(varchar, CAST(NumItems AS money), 1), 0, LEN(CONVERT(varchar, CAST(NumDocs AS money), 1)) - 2) as [NumDocs]

4

5 に答える 5

2

文字列を手動で分割するのではなく、数値に変換して (または数値のままにして)、ToString適切な形式でメソッドを呼び出す必要があります。

int value = 546546555;
string displayValue = value.ToString("#,#");

さまざまな形式の値については、この MSDN ページを参照してください。

C - 通貨形式

D - 10 進形式

E - 科学フォーマット

F - 固定小数点形式

G - 一般的な形式

N - 数値形式

P - パーセント形式

R - 往復形式

X - 16 進形式

于 2012-09-24T14:36:57.137 に答える
0

あまり良いコードではありませんが、機能します。

public static string GetString(string val, int number)
        {
            List<string> res = new List<string>();
            res.Add("");

            int counter = 0, i = 0;
            while (i < val.Length)
            {
                while (res[counter].Length < number && i < val.Length)
                {
                    res[counter] += val[i];
                    i++;
                }
                res.Add("");
                counter++;
            }

            return string.Join(",", res.Where(r => !string.IsNullOrEmpty(r)));
        }

val-入力文字列番号-分割する文字数。この場合は3になります。

于 2012-09-24T14:53:07.770 に答える
0

ジーン S とダンは私見で答えを持っているようです。組み込みのフォーマットを使用する利点は、ローカライズ可能なコードを記述できることです。たとえば、「,」は米国の数値グループの区切り文字ですが、「.」は スペインで使用されています。

        var val = 12345678;
        CultureInfo c = CultureInfo.CurrentCulture;
        Application.CurrentCulture = new CultureInfo("EN-us");
        var s = String.Format("{0:#,#}", val);
        Application.CurrentCulture = new CultureInfo("ES-es");
        var i = String.Format("{0:#,#}", val);
        Application.CurrentCulture = c;
于 2012-09-24T15:05:03.427 に答える
0

これを行うには、文字列を整数に変換し、Parse理想的にはまたはTryParseを使用し、文字列の書式設定を使用して表示する必要があります。

var str = "546546555";
var formatted = String.Empty;
int value = 0;
if(int.TryParse(str,out value))
{
   formatted = value.ToString("#,#");
}

実際の例: http://rextester.com/FHO11833

于 2012-09-24T14:36:36.827 に答える
0

数値を出力しようとしているだけではないと仮定すると、ここにあなたが求めていることを行うと私が信じている簡単な関数があります:

string splitter(string tosplit, int num, string splitstring)
    {
        string output = "";
        for (int i = 0; i < tosplit.Length; i += num)
            if (i + num < tosplit.Length)
                output += tosplit.Substring(i, num) + ",";
            else
                output += tosplit.Substring(i);
        return output;
    }

ここで、の出力は次のsplitter("546546555", 3, ",")ようになります546,546,555

ただし、他の回答がこのケースを完全にカバーするため、これは数値には理想的ではありません。

于 2012-09-24T14:41:20.177 に答える