C#:将带有数字和文本的String转换为float

时间:2014-10-18 13:22:50

标签: c# .net

我正在从Excel文件中读取代表价格的列。 (这些行在循环中)。

dynamic tempPrice = (range.Cells[i, 15] as Excel.Range).Value2;
float price = (tempPrice == null) ? 0 : (float)tempPrice;

有三种可能的情况:

  • 单元格可能为空(在这种情况下,我将其转换为0)
  • 单元格可能包含数字。
  • 单元格可能包含数字和货币名称的字符串(例如“140 USD”,“140 $”等)。

在第三种情况下(破坏了我的代码),如何才能获得该数字并将其转换为浮动?

3 个答案:

答案 0 :(得分:2)

您可以使用此代码

float.Parse(tempPrice , NumberStyles.AllowCurrencySymbol | NumberStyles.Number);

答案 1 :(得分:1)

当您尝试解析值时,您应该始终首先验证是否可以在解析之前解析它。这样做,您可以在运行时避免任何类型的错误。

以下是你如何做到的(你可以在那里找到类似的方式:https://social.msdn.microsoft.com/Forums/vstudio/en-US/701df7da-17d8-41b5-b2d2-94b2be9c0191/floattryparse

if(float.TryParse(tempPrice,NumberStyles.AllowCurrencySymbol, out value)
   {
    Console.WriteLine("Converted '{0}' to {1}.", tempPrice, value); 
   }

希望它可以帮到你!

答案 2 :(得分:0)

你可以这样做

float price;
if(!Single.TryParse(Regex.Replace(tempPrice, "\D+$", ""), out price)) {
  price = 0;
}
// if it doesn't enter the condition, then price will have the parsed float value.