c# 如何用小数点分隔一个整数?

c# How to separate an int with decimal points?

我正在尝试使用小数点而不是逗号作为分隔符来格式化 int。

示例:1234567890 应格式化为 1.234.567.890

text_team1.text = em.team1Score.ToString("#,##0");

这将得到 1,234,567,890

但是在 this topic 中有一些关于使用包含格式样式的 class CultureInfo 的信息,所以我使用了其中的几个:

text_team1.text = em.team1Score.ToString("#,##0", new System.Globalization.CultureInfo("IS-is"));

举个例子。但是似乎每个cultureInfo都使用逗号作为分隔符。

即使之后编辑字符串,仍然有逗号作为分隔符。

text_team1.text = em.team1Score.ToString("#,##0");
text_team1.text.Replace(',','.');

Even by editing the string afterwards, there is still the comma as seperator.

text_team1.text = em.team1Score.ToString("#,##0");
text_team1.text.Replace(',','.');

您忘记将替换后的字符串重新赋值。

text_team1.text = text_team1.text.Replace(',','.');

编辑:

如果您仍然喜欢不使用 Replace 功能的解决方案,您可以使用下面的扩展方法。它适用于 stringsints。如果您不知道扩展方法的工作原理,请 Google 阅读有关扩展方法的信息。

创建 ExtensionMethod 脚本并将其放置在项目的任何文件夹中:

using System.Globalization;
using System;

public static class ExtensionMethod
{
    public static string formatStringWithDot(this string stringToFormat)
    {
        string convertResult = "";
        int tempInt;
        if (Int32.TryParse(stringToFormat, out tempInt))
        {
            convertResult = tempInt.ToString("N0", new NumberFormatInfo()
            {
                NumberGroupSizes = new[] { 3 },
                NumberGroupSeparator = "."
            });
        }
        return convertResult;
    }

    public static string formatStringWithDot(this int intToFormat)
    {
        string convertResult = "";

        convertResult = intToFormat.ToString("N0", new NumberFormatInfo()
        {
            NumberGroupSizes = new[] { 3 },
            NumberGroupSeparator = "."
        });
        return convertResult;
    }
}

用法:

string stringToFormat = "1234567890";
Debug.Log(stringToFormat.formatStringWithDot());

或者

int intToFormat = 1234567890;
Debug.Log(intToFormat.formatStringWithDot());

或者

string stringToFormat = "1234567890";
text_team1.text = stringToFormat.formatStringWithDot();

根据您 运行 进入的场景使用每一个。

如果您使用全球化来格式化您的字符串,您可以设置 Custom Group Seperator

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;

// Displays the same value with a blank as the separator.
Int64 myInt = 1234567890;
nfi.NumberGroupSeparator = ".";
Console.WriteLine( myInt.ToString( "N0", nfi ) );

https://dotnetfiddle.net/vRqd6x

我更喜欢使用 string.Format()。 你的 OS 代表那种格式的数字吗?如果是这样,您可以尝试 the simplest form

text_team1.text = string.Format("{0:N}", em.team1Score);

或者您可以使用

强制执行
text_team1.text = string.Format(CultureInfo.GetCultureInfo("IS-is"), "{0:N}", em.team1Score);

哪个在乎文化。