我需要将字符串转换为浮点数,但可以有不同的输入字符串格式,例如'1234,5'
或'1234.5'
或'1 234,5'
或'1,234.5'
或其他格式。而且我不能更改语言环境小数点指针或千位分隔符,因为我可能不知道我会提前得到什么数据。
有没有办法或方法或库来解析和转换以浮点这种特定于区域设置的值,而无需知道使用哪个区域设置?
附言对于日期的相同问题,是否有任何解决方案?
蒂亚。
您可以对哪个字符是千位分隔符,哪个是小数点做出一些假设。但是,在某些情况下,您无法确定该怎么做:
- 查找最后一个
.
或,
字符。如果出现多次,则数字没有小数点,该字符是千位分隔符 - 如果字符串只包含其中之一,则最后一个是小数点
- 如果字符串只包含一个点/逗号,那么您几乎就不走运了:
123.456
或123,456
可能是数字123456
或123.456
。但是,对于像123.45
这样的数字 - 即潜在的千位分隔符之后的位数不是 3 的倍数 - 您可以假设它是小数点。