Cómo analizar cadenas de números que contienen comas en un entero en Java?

NumberFormatException cuando bash analizar 265,858 con Integer.parseInt() .

¿Hay alguna forma de analizarlo en un número entero?

¿Es esta coma un separador decimal o son estos dos números? En el primer caso, debe proporcionar la NumberFormat Locale a la clase NumberFormat que usa una coma como separador decimal:

 NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858") 

Esto resulta en 265.858 . Pero al usar la configuración regional de EE. UU. Obtendrás 265858 :

 NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858") 

Esto se debe a que en Francia tratan la coma como separador decimal mientras están en EE. UU., Como agrupación (mil) separador.

Si se trata de dos números: String.split() y analiza dos cadenas independientes de forma independiente.

Puede eliminar el , antes de analizarlo en un int:

 int i = Integer.parseInt(myNumberString.replaceAll(",", "")); 

Si es un número y desea eliminar separadores, NumberFormat le devolverá un número. Solo asegúrese de usar la getNumberInstance regional correcta cuando use el método getNumberInstance .

Por ejemplo, algunas configuraciones regionales cambian la coma y el punto decimal a lo que puede estar acostumbrado.

Luego solo usa el método intValue para devolver un entero. Sin embargo, tendrá que envolver todo en un bloque try / catch para dar cuenta de las excepciones de Parse.

 try { NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK); ukFormat.parse("265,858").intValue(); } catch(ParseException e) { //Handle exception } 

Una opción sería quitar las comas:

 "265,858".replaceAll(",",""); 

O podría usar NumberFormat.parse , configurándolo como entero solamente.

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html#parse(java.lang.String )

Lo primero que hace clic para mí, suponiendo que se trata de un solo número, es …

 String number = "265,858"; number.replaceAll(",",""); Integer num = Integer.parseInt(number); 

Prueba esto:

 String x = "265,858 "; x = x.split(",")[0]; System.out.println(Integer.parseInt(x)); 

EDITAR: si lo quieres redondeado al número entero más cercano:

  String x = "265,858 "; x = x.replaceAll(",","."); System.out.println(Math.round(Double.parseDouble(x)));