每3位数字格式化空间

时间:2018-04-13 15:12:43

标签: c#

您好我想要在哪里更改号码。但是当它的大数字你不能读它。所以我想让它每隔3位数就会占用空间。 例如 32874123 32 874 123 。谢谢 。我在那里看过它:Number formating, spaces every 3 digits但它在javascript中。

我试图用lenght或者其他东西做这件事,但它对我没用。 谢谢你的帮助 。

3 个答案:

答案 0 :(得分:14)

如果您想以“正确”方式执行此操作,请使用新的location ~ ^/media2/detail/ { root /home/sftpserver/projects/myproject; ... }

NumberFormatInfo

结果:

123 456 789

Try it out here

答案 1 :(得分:1)

我知道你已经有了答案,但我想我会把它扔出去。您可以创建一个执行此操作的扩展方法,这可以在您想要使用它时稍微简化一下(您只需键入数字,然后键入.ToStringWithSpaces())。

例如:

public static class Extensions
{
    public static string ToStringWithSpaces(this int number)
    {
        var numStr = number.ToString();
        var len = numStr.Length;
        var result = new StringBuilder();
        for (var i = 0; i < len; i++)
        {
            if (i > 0 && i % 3 == 0) result.Insert(0, " ");
            result.Insert(0, numStr[len - 1 - i]);
        }
        return result.ToString();
    }
}

然后,在使用中:

private static void Main()
{
    var bigNumber = int.MaxValue;

    Console.WriteLine(123.ToStringWithSpaces());
    Console.WriteLine(1234.ToStringWithSpaces());
    Console.WriteLine(12345.ToStringWithSpaces());
    Console.WriteLine(123456.ToStringWithSpaces());
    Console.WriteLine(1234567.ToStringWithSpaces());
    Console.WriteLine(32874123.ToStringWithSpaces());
    Console.WriteLine(bigNumber.ToStringWithSpaces());

    GetKeyFromUser("\nDone!! Press any key to exit...");
}

<强>输出

enter image description here

这种方法的一个好处是你还可以添加插入位置和分隔符字符串作为参数(使用默认值)。这样,您就可以自定义输出。

以下是修改后的版本:

public static class Extensions
{
    public static string ToCustomString(this int number, 
        int position = 3, string separator = " ")
    {
        var numStr = number.ToString();
        var len = numStr.Length;
        var result = new StringBuilder();
        for (var i = 0; i < len; i++)
        {
            if (i > 0 && i % position == 0) result.Insert(0, separator);
            result.Insert(0, numStr[len - 1 - i]);
        }
        return result.ToString();
    }
}

现在我们可以使用默认值(每三个字符一个空格)显示数字,或者我们可以自定义它。例如,如果数字是在某些文本的中间写的(,或者更糟糕的是,如果你用空格分隔两个数字并且用空格隔开),空格可能会让它变得更难读。在这种情况下,我们可能会使用短划线。

以下是一个例子:

private static void Main()
{
    var bigNumber = int.MaxValue;

    Console.WriteLine(bigNumber.ToString());
    Console.WriteLine(bigNumber.ToCustomString());
    Console.WriteLine(bigNumber.ToCustomString(2, "-"));
    Console.WriteLine(bigNumber.ToCustomString(5, " < *_* > "));

    GetKeyFromUser("\nDone!! Press any key to exit...");
}

<强>输出

enter image description here

答案 2 :(得分:-5)

您可以使用逗号格式化,并用空格替换逗号

var result = inputNumber.ToString("N0",CultureInfo.InvariantCulture).Replace(',', ' ');