Java 如何根据区域设置设置数字格式

Java 如何根据区域设置设置数字格式,java,locale,number-formatting,Java,Locale,Number Formatting,我有一个输入框,我的网页支持英语和德语 在文本框中,用户应只输入整数 那么我如何格式化用户输入的数字1,2(德语),然后我想检查它是否是一个有效的整数,但在这样做之前,我需要将它转换回1.2。如何做到这一点?使用JDK对区域设置的支持: public static void main(String[] args) throws Exception { String str = "1,2"; Number number = DecimalFormat.getInstance(Loc

我有一个输入框,我的网页支持英语和德语

在文本框中,用户应只输入整数


那么我如何格式化用户输入的数字1,2(德语),然后我想检查它是否是一个有效的整数,但在这样做之前,我需要将它转换回1.2。如何做到这一点?

使用JDK对区域设置的支持:

public static void main(String[] args) throws Exception {
    String str = "1,2";
    Number number = DecimalFormat.getInstance(Locale.GERMAN).parse(str);
    System.out.println(number);
}
印刷品:

1.2

使用JDK对区域设置的支持:

public static void main(String[] args) throws Exception {
    String str = "1,2";
    Number number = DecimalFormat.getInstance(Locale.GERMAN).parse(str);
    System.out.println(number);
}
印刷品:

1.2

答案就在这个问题上(或者至少在它的标签上)。使用
NumberFormat
解析输入的字符串,如果没有
ParseException
,则该字符串为有效整数


完全正确的是,
NumberFormat
将愉快地将
1,2ABC
解析为
1.2
。为了避免这种情况,您可以使用parse方法,将
ParsePosition
作为参数,并检查解析后的位置是否位于字符串的末尾。

答案在问题中(或至少在其标记中)。使用
NumberFormat
解析输入的字符串,如果没有
ParseException
,则该字符串为有效整数

完全正确的是,
NumberFormat
将愉快地将
1,2ABC
解析为
1.2
。为了避免这种情况,可以使用parse方法,将
ParsePosition
作为参数,并检查解析后的位置是否位于字符串的末尾