繁体   English   中英

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注释中所述的空字符串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”)时,无法解决这个问题。 所有解决方案都要求:

  • 对生成的字符串进行后处理。 这里,最接近特殊情况的两位小数可能是%格式
  • 首先计算数字参数以使其成为整数
  • 编写并应用自定义IFormatProvider实现

如果你想消除十进制separtor(“逃避点”,就像你说的那样),尝试 空字符串 替换小数分隔

string result = String
 .Format("{0:0.0}", _hp)
 .Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, "");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM