[英]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
注释中所述的空字符串Replace
点。
double value = 1.25;
var stringValue = value.ToString(CultureInfo.InvariantCulture).Replace(".",string.Empty);
编辑2:还有另一个一般的想法 ,不使用Replace
功能(但它也不使用String.Format
)
var stringValue = string.Join("", value.ToString().Where(char.IsDigit));
另外一个类似的想法:
var stringValue = new string(value.ToString().Where(char.IsDigit).ToArray());
首先,请阅读我对该问题的评论。 正如我在那里提到的,数值的字符串格式取决于区域设置。 所以,在线以下
mbar.HealthLabel.text = String.Format("{0:0.0}", _hp);
将返回: 2,25 (关于波兰数字标准)
在我看来,你需要这样的东西:
mbar.HealthLabel.text = String.Format("{0:D}", Math.Floor(_hp*100));
有关详细信息,请参阅:
当我们只允许修改格式字符串(“template”)时,无法解决这个问题。 所有解决方案都要求:
如果你想消除十进制separtor(“逃避点”,就像你说的那样),尝试用 空字符串 替换小数分隔符 :
string result = String
.Format("{0:0.0}", _hp)
.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.