簡體   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