C#:将带数字和文本的字符串转换为浮点值

本文关键字:转换 字符串 文本 数字 | 更新日期: 2023-09-27 18:26:55

我正在从Excel文件中读取一个表示价格的列。(这些线是循环的)。

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

有3种可能的情况:

  • 单元格可能为空(在这种情况下,我将其转换为0)
  • 单元格可能包含一个数字
  • 单元格可能包含一个由数字和货币名称组成的字符串(例如"140美元"、"140$"等)

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

C#:将带数字和文本的字符串转换为浮点值

您可以使用此代码

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

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

以下是你的方法(你可以在那里找到类似的方法: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); 
   }

希望它能帮助你!

您可以执行此

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.