C# 字符串格式:转义一个点
C# String format: escape a dot
我有一行代码,类似于:
mbar.HealthLabel.text = String.Format("{0:0.0}", _hp);
输出为:例如2.25。是否可以使用 String.Format 函数从输出字符串视图中转义一个点?
为了。前任。 225,
为了让我的问题更清楚,我需要同样的效果:
Math.Floor(_hp * 100).ToString();
但需要通过 String.Format
模板来完成。谢谢。
简单的你可以这样做
double value = 1.25;
var stringValue = string.Format("{0:0}", value * 100, CultureInfo.InvariantCulture); //125
编辑:
更通用的解决方案是 Replace
注释中所述的带空字符串的点。
double value = 1.25;
var stringValue = value.ToString(CultureInfo.InvariantCulture).Replace(".",string.Empty);
EDIT2: 还有 another general idea 不使用 Replace
函数(但它也不使用 String.Format
)
var stringValue = string.Join("", value.ToString().Where(char.IsDigit));
还有一个类似的想法:
var stringValue = new string(value.ToString().Where(char.IsDigit).ToArray());
如果您想消除小数点分隔符("escape the dot",如您所说),请尝试替换小数分隔符 空字符串 :
string result = String
.Format("{0:0.0}", _hp)
.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, "");
首先,请阅读我对问题的评论。正如我在那里提到的,数值的字符串格式取决于区域设置。所以,下面的行
mbar.HealthLabel.text = String.Format("{0:0.0}", _hp);
将return:2,25(关于波兰数字标准)
在我看来你需要这样的东西:
mbar.HealthLabel.text = String.Format("{0:D}", Math.Floor(_hp*100));
详情请见:
在 Microsoft.NET Framework 4.7 之前,当我们只允许修改格式字符串 ("template") 时,无法解决此问题。所有解决方案都需要:
- Post-处理结果字符串。在这里,最接近两位小数的特殊情况可能是 % 格式
- 首先计算数字参数使其成为整数
- 编写并应用自定义 IFormatProvider 实现
我有一行代码,类似于:
mbar.HealthLabel.text = String.Format("{0:0.0}", _hp);
输出为:例如2.25。是否可以使用 String.Format 函数从输出字符串视图中转义一个点?
为了。前任。 225,
为了让我的问题更清楚,我需要同样的效果:
Math.Floor(_hp * 100).ToString();
但需要通过 String.Format
模板来完成。谢谢。
简单的你可以这样做
double value = 1.25;
var stringValue = string.Format("{0:0}", value * 100, CultureInfo.InvariantCulture); //125
编辑:
更通用的解决方案是 Replace
注释中所述的带空字符串的点。
double value = 1.25;
var stringValue = value.ToString(CultureInfo.InvariantCulture).Replace(".",string.Empty);
EDIT2: 还有 another general idea 不使用 Replace
函数(但它也不使用 String.Format
)
var stringValue = string.Join("", value.ToString().Where(char.IsDigit));
还有一个类似的想法:
var stringValue = new string(value.ToString().Where(char.IsDigit).ToArray());
如果您想消除小数点分隔符("escape the dot",如您所说),请尝试替换小数分隔符 空字符串 :
string result = String
.Format("{0:0.0}", _hp)
.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, "");
首先,请阅读我对问题的评论。正如我在那里提到的,数值的字符串格式取决于区域设置。所以,下面的行
mbar.HealthLabel.text = String.Format("{0:0.0}", _hp);
将return:2,25(关于波兰数字标准)
在我看来你需要这样的东西:
mbar.HealthLabel.text = String.Format("{0:D}", Math.Floor(_hp*100));
详情请见:
在 Microsoft.NET Framework 4.7 之前,当我们只允许修改格式字符串 ("template") 时,无法解决此问题。所有解决方案都需要:
- Post-处理结果字符串。在这里,最接近两位小数的特殊情况可能是 % 格式
- 首先计算数字参数使其成为整数
- 编写并应用自定义 IFormatProvider 实现