簡體   English   中英

C#字符串,在結尾為整數時具有特定字符

[英]C# string with particular character at end to integer

我可以通過查看字符串的最后一個字符並基於將它發送到特定函數以進行轉換的一系列步驟來完成此操作。 但我只是想知道是否有更簡單的方法來做到以下幾點。

例如,我有一個字符串,可能會說23.44M或5.23B,M和B顯然代表“百萬”或“十億”,我想將該字符串轉換為它代表的數字,但只是不確定最有效的方法。 尋找一些想法。 謝謝

我將構建一個Dictionary,並用鍵值對填充它,例如(B,1,000,000,000)和(M,1,000,000)。 將角色放在最后,查找該角色的值,然后相乘。

這些方面的東西對你有用嗎?

double num = Double.parse(inputStr.Remove(inputStr.Count-1));
char lastChar = inputStr.Last();
switch(lastChar)
{
   case 'M':
      num *= 1000000;
      break;
   case 'B':
      num *= 1000000000;
      break;
}

如果輸入的格式可能不同,則必須添加其他邏輯,包括防止非法Parse()。

你最好的選擇可能是使用你可以分組的正則表達式( 這里是MSDN文檔 )(這不是正則表達式語法)[數字] [字符]然后你有2個組,第一個是你的號碼,第二個是你的“因素“性格

然后,使用double.TryParse()轉換第一個,並通過開關或一組if語句運行第二個,以根據需要進行乘法以獲得最終結果。

/// <summary>
/// Gets the value.
/// </summary>
/// <param name="number">The number.</param>
/// <returns></returns>
public static decimal GetValue(string number)
{
    char unit = number.Last();
    string num = number.Remove(number.Length - 1, 1);

    decimal multiplier;
    switch (unit)
    {
        case 'M':
        case 'm':
            multiplier = 1000000; break;

        default:
            multiplier = 1; break;
    }

    return decimal.Parse(num) * multiplier;
}

作為@Smelch答案的書呆子替代你可以填充一個String常量POSTFIXES,例如“xHKxxMxxBxxTxxQ”並將你的基數乘以Math.Pow(10,POSTFIXES.LastIndexOf(...)+ 1)

使用字典將字符映射到乘數而不是switch語句,並僅使用大寫:

public static decimal GetValue(string number)
{
    return decimal.Parse(number.Remove(number.Length - 1, 1)) *  _multipliers[number.Last().ToUpper()];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM