2017-05-05 39 views
5

我有一行代码,是这样的:C#字符串格式:逃脱点

mbar.HealthLabel.text = String.Format("{0:0.0}", _hp); 

输出为:2.25例子。使用String.Format函数可以从输出字符串视图中转义一个点吗?

对于。恩。 225,

为了使我的问题更清楚,我需要像同样的效果:

Math.Floor(_hp * 100).ToString(); 

但需要通过String.Format模板来做到这一点..谢谢。

+0

什么是原始字符串中' _hp'? –

+0

为什么需要使用String.Format的任何特定原因? – PaulF

+1

试着做_hp.Replace(“。”,“”),它用空字符串 – Praveen

回答

4

只要你能做到这样

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)); 

也是另一个类似的想法:

​​
+1

这就是我在这个问题的评论中完全建议的内容。 –

+3

是的,发送的时间显示我们两个正在同时考虑同一个解决方案。 –

+0

@HosseinNarimaniRad:我假设(希望?),这只是对你答案的认可,而不是任何形式的复制指责。 – Chris

0

如果你想消除小数部分(“e景观点”,因为你已经把它),尝试用空字符串更换小数点分隔符:

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

首先,请阅读我的问题发表评论。正如我在那里提到的,数字值的字符串格式取决于区域设置。所以,下面的线

mbar.HealthLabel.text = String.Format("{0:0.0}", _hp); 

将返回:2.25(如波兰数字标准)

在我看来,你需要这样的事:

mbar.HealthLabel.text = String.Format("{0:D}", Math.Floor(_hp*100)); 

对于furhter细节请参阅:

Standard Numeric Format Strings

Custom Numeric Format Strings

1

至于Microsoft.NET Framework 4.7,当我们只允许修改格式字符串(“模板”)时,没有办法解决这个问题。所有解决方案都需要:

  • 后处理结果字符串。在这里,最近与两位小数的特殊情况而定%格式
  • 计算的数值参数先让它整数
  • 编写和应用自定义的IFormatProvider实现