0

可能重复:
.NET String.Format() 为数字添加千位逗号

我正在尝试将逗号添加到表示层的数字中,并且需要强制转换然后将数字拆分为每三个字符,以便加入“,”。

所以如果我有这样的字符串

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 - 十进制格式

E - 科学格式

F - 定点格式

G - 一般格式

N - 数字格式

P - 百分比格式

R - 往返格式

X - 十六进制格式

于 2012-09-24T14:36:57.137 回答
0

您应该通过将字符串转换为整数来做到这一点,使用Parseor 理想情况下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 回答
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 回答