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
功能的解决方案,您可以使用下面的扩展方法。它适用于 strings
和 ints
。如果您不知道扩展方法的工作原理,请 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 ) );
我更喜欢使用 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);
哪个在乎文化。
我正在尝试使用小数点而不是逗号作为分隔符来格式化 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
功能的解决方案,您可以使用下面的扩展方法。它适用于 strings
和 ints
。如果您不知道扩展方法的工作原理,请 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 ) );
我更喜欢使用 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);
哪个在乎文化。