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$"等)
在第三种情况下(这破坏了我的代码),我如何才能只得到数字并将其转换为浮点值?
您可以使用此代码
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.