我需要将字符串转换为数字。问题是字符串是用户输入的,它后面可能有单位,所以数字部分实际上是一个前缀。这里有些例子:
"8.1 in"
"3.0cm"
"90%"
"4'"
我无法提取号码。NumberFormat.parse() 看起来很有希望。但是,它具有不稳定的行为。它将“4%”和“4x”解析为 4.0 就好了,但它在“4'”和“4”(在 Locale.US 中)抛出 ParseException。
扫描仪看起来也很有希望,但在最后 3 种情况下它失败了,因为我认为数字部分和单位之间没有分隔符。如何可靠地将浮点数解析为第一个非法字符,并且无论语言环境如何都正确执行?