例如,将可以为空或包含“1.2”的字符串转换为整数的最佳方法是什么? int.TryParse
当然会失败,我不想使用 float.TryParse
然后转换为 int
。
最佳答案
解决方案 1:Convert.ToDouble
(文化相关)
您可以使用 Convert.ToDouble
。但是,当心!仅当当前区域性设置中的数字分隔符是句点字符时,以下解决方案才有效。
var a = (int)Convert.ToDouble("1.2");
解决方案 2:Convert.ToDouble
(文化无关)
最好使用IFormatProvider
并以独立于当前文化设置的方式转换数字:
var a = (int)Convert.ToDouble("1.2", CultureInfo.InvariantCulture.NumberFormat);
解决方案 3:解析和拆分
完成此任务的另一种方法是对已解析的字符串使用拆分:
var a = int.Parse("1.2".Split('.')[0]);
或者:
var a = int.Parse("1.2".Split('.').First());
注意事项
- 如果你想处理空字符串和空字符串,写一个方法并添加字符串。
IsNullOrEmpty
条件。 - 要获取当前区域性设置的小数点分隔符,您可以使用
NumberFormatInfo.NumberDecimalSeparator
属性(property)。 - 你还应该关注rounding避免 traps .
- 选择转换、
Parse
、TryParse
或Convert
明智地上课。阅读更多:
关于C# 将包含 float 的字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3395381/