Android - 如何使用逗号或点作为小数分隔符将字符串解析为数字

时间:2012-03-28 19:58:52

标签: java android number-formatting

我需要一个能解析1,123.12和1.123,12到1123.12的函数 我使用的数字有3个来源,1个将始终以美国格式出现,1个将始终以PT_BR(1.123,12)出现,第三个可能以任何格式出现,具体取决于设备的区域设置如何正确解析所有他们?

编辑:我不知道数字格式化的方式,我需要一个可以接收任何格式并正确解析的函数。也许我需要的是一种方法来测试哪种格式是表示数字的字符串。将收到“1.123,12”的东西,并说是“PT_BR”并收到1,123.12并说这是“美国”。但我不知道如何做到这一点,特别是如何为任何地方做这样的炒锅。

2 个答案:

答案 0 :(得分:1)

US:

NumberFormat nf = NumberFormat.getInstance(Locale.US);
Number number = nf.parse("1,123.12");

巴西葡萄牙语:

NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("pt-BR"));
Number number = nf.parse("1.123,12");

默认语言区域:

NumberFormat nf = NumberFormat.getInstance();
Number number = nf.parse("1123.12");

答案 1 :(得分:0)

您只能获取环境的区域设置。在字符串的上下文中不存在类似语言环境的东西,它恰恰相反:字符串的含义取决于语言环境。有些情况下你可以猜出一个字符串代表的数字(比如你​​发布的那个)但是例如123,456呢?这是模棱两可的,所以没有图书馆可以做这项工作。显然,如果你施加一些约束(例如,数字必须有两个十进制数字),你将能够轻松编写自己的解析器,但没有这样的约定,它根本不可能