将带有句点和逗号的字符串转换为 int



如何将带有句点和逗号的字符串转换为 int,例如

String a "9.000,00"
int b = Integer.parseInt(a);

当我运行此代码时,我收到一条错误消息:Exception in thread "main" java.lang.NumberFormatException: For input string: "9.000,00"

如果您想

获得结果900000那么只需删除所有,.并解析它,例如使用 Integer.parseIntLong.parseLong 或者如果数字可以很大,甚至可以更好地使用BigInteger

String a = "9.000,00";
BigInteger bn = new BigInteger(a.replaceAll("[.,]", ""));
System.out.println(bn);

输出:900000


但是,如果您想将9.000,00解析为9000(其中,00部分是小数),那么您可以将NumberFormat与使用类似于您的输入的形式Locale.GERMANY一起使用:123.456,78

String a = "9.000,00";
NumberFormat format = NumberFormat.getInstance(Locale.GERMANY);
Number number = format.parse(a);
double value = number.doubleValue();
//or if you want int
int intValue = number.intValue();
System.out.println(value);
System.out.println(intValue);

输出:

9000.0
9000
final String a = "9.000,00";
final NumberFormat format = NumberFormat.getInstance(Locale.GERMAN); // Use German locale for number formats
final Number number = format.parse(a); // Parse the number
int i = number.intValue(); // Get the integer value

参考

为此,您需要使用 java.text.NumberFormatNumberFormat.getInstance(Locale.FRANCE)(或其他兼容Locale

import java.text.NumberFormat;
import java.util.Locale;
class Test {
    public static void main(String[] args) throws Exception {
        NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
        String a = "9.000,00";
        a = a.replaceAll("\.", "");
        Number number = format.parse(a);
        double d = number.doubleValue();
        int c = (int) Math.floor(d);   
        System.out.println(c);
    }
}

随心所欲地打印9000(现在是int)!

如果我打印每个中间步骤:

import java.text.NumberFormat;
 import java.util.*;
class test {
public static void main(String[] args) throws Exception {
   NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
   String a = "9.000,00";
   a = a.replaceAll("\.", "");
   System.out.println(a); // prints 9000,00
   Number number = format.parse(a);
   System.out.println(number); // prints 9000
   double d = number.doubleValue();
   System.out.println(d); // prints 9000.0
   int c = (int) Math.floor(d);   
   System.out.println(c); // prints 9000
}
}

所以如果你想要 Okem 9000,00正如你在评论中所说的那样,你只需要

a = a.replaceAll("\.", "");
System.out.println(a);

这为您提供了9000,00的输出

我希望这有所帮助。

试试这个 -

String a = "9.000,00";
a = a.replace(",","");
a = a.replace(".","");
int b = Integer.parseInt(a);

我认为DecimalFormat.parse是Java 7 API的方式:

String  a = "9.000,00";
DecimalFormat foo = new DecimalFormat();
Number bar = foo.parse(a, new ParsePosition(0));

之后,你去对你刚刚得到的数字感到满意。

如果您希望答案是 900000(这对我来说没有意义,但我正在回复您的问题)并将其放入 int 中:

int b = Integer.parseInt(a.replaceAll(",","").replaceAll("\.",""));

如评论中所述。

最新更新