Convertir una cadena a un entero en Android

182

¿Cómo convierto una cadena en un entero?

Tengo un cuadro de texto para que el usuario ingrese un número en:

EditText et = (EditText) findViewById(R.id.entry1);
String hello = et.getText().toString();

Y el valor se asigna a la cadena hello.

Quiero convertirlo en un entero para poder obtener el número que escribieron; se usará más adelante en el código.

¿Hay alguna manera de obtener el EditTextentero? Eso saltaría al intermediario. Si no, la cadena al número entero estará bien.

James Andrew
fuente
Relacionado: stackoverflow.com/questions/5585779/…
Rob Hruska

Respuestas:

417

Vea la clase Integer y el parseInt()método estático :

http://developer.android.com/reference/java/lang/Integer.html

Integer.parseInt(et.getText().toString());

Sin NumberFormatExceptionembargo, deberá atrapar en caso de problemas durante el análisis, por lo que:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 
Jon
fuente
1
¿Qué pasa con el uso de manuel a continuación? ¿Es más seguro usar parseInt sobre valueOf?
Gabriel Fair
46
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
manuel
fuente
26

Usar expresión regular:

String s="your1string2contain3with4number";
int i=Integer.parseInt(s.replaceAll("[\\D]", ""));

salida: i = 1234;

Si necesita la primera combinación de números, entonces debe probar el siguiente código:

String s="abc123xyz456";
int i=NumberFormat.getInstance().parse(s).intValue();

salida: i = 123;

Ashish Sahu
fuente
13

Usar expresión regular:

int i=Integer.parseInt("hello123".replaceAll("[\\D]",""));
int j=Integer.parseInt("123hello".replaceAll("[\\D]",""));
int k=Integer.parseInt("1h2el3lo".replaceAll("[\\D]",""));

salida:

i=123;
j=123;
k=123;
Ashish Sahu
fuente
Exactamente lo que estaba buscando.
Ahamadullah Saikat
9

Usar expresión regular es la mejor manera de hacerlo, como ya lo mencionó Ashish Sahu

public int getInt(String s){
return Integer.parseInt(s.replaceAll("[\\D]", ""));
}

fuente
8

Prueba este código, realmente funciona.

int number = 0;
try {
    number = Integer.parseInt(YourEditTextName.getText().toString());
} catch(NumberFormatException e) {
   System.out.println("parse value is not valid : " + e);
} 
Ravi Makvana
fuente
6

La mejor manera de convertir su cadena en int es:

 EditText et = (EditText) findViewById(R.id.entry1);
 String hello = et.getText().toString();
 int converted=Integer.parseInt(hello);
Ravi
fuente
5

Debes encubrir String para flotar. Está funcionando.

float result = 0;
 if (TextUtils.isEmpty(et.getText().toString()) {
  return;
}

result = Float.parseFloat(et.getText().toString());

tv.setText(result); 
Tren Narek
fuente
5

Puede usar lo siguiente para analizar una cadena a un entero:

valor int = Integer.parseInt (textView.getText (). toString ());

(1) input: 12 entonces funcionará ... porque textview ha tomado este número 12 como cadena "12".

(2) input: "abdul", entonces arrojará una excepción que es NumberFormatException. Entonces, para resolver esto, necesitamos usar try catch como menciono a continuación:

  int tax_amount=20;
  EditText edit=(EditText)findViewById(R.id.editText1);
     try
       {

        int value=Integer.parseInt(edit.getText().toString());
        value=value+tax_amount;
        edit.setText(String.valueOf(value));// to convert integer to string 

       }catch(NumberFormatException ee){
       Log.e(ee.toString());
       }

También puede consultar el siguiente enlace para obtener más información: http://developer.android.com/reference/java/lang/Integer.html

Abdul Rizwan
fuente
4

También puedes hacerlo una línea:

int hello = Integer.parseInt(((Button)findViewById(R.id.button1)).getText().toString().replaceAll("[\\D]", ""));

Lectura del orden de ejecución

  1. agarra la vista usando findViewById(R.id.button1)
  2. utilizar ((Button)______)para lanzar el ViewcomoButton
  3. Llame .GetText() para obtener la entrada de texto de Button
  4. Llamada .toString()para convertir el carácter que varía en una cadena
  5. Llame .ReplaceAll()con "[\\D]"para reemplazar todos los caracteres que no sean dígitos con "" (nada)
  6. Llame a Integer.parseInt()agarrar y devolver un número entero de la cadena de solo dígitos.
Brett Moan
fuente
Esa es una gran cantidad de código para una línea (solo mi preferencia).
Patrick M
Sí, tampoco lo haría de esa manera, fue más una referencia al comentario del OP "salta al intermediario".
Brett Moan
3

El método mucho más simple es usar el decodemétodo de Integermodo que, por ejemplo:

int helloInt = Integer.decode(hello);
Joseph Chotard
fuente
2

Hay cinco formas de convertir la primera forma:

String str = " 123" ;
int i = Integer.parse(str); 
output : 123

La segunda forma:

String str = "hello123world";
int i = Integer.parse(str.replaceAll("[\\D]" , "" ) );
output : 123

La tercera vía:

String str"123";
int i = new Integer(str);
output "123 

El cuarto camino:

String str"123";
int i = Integer.valueOf(Str);
output "123 

La quinta vía:

String str"123";
int i = Integer.decode(str);
output "123 

Podría haber otras formas, pero eso es lo que recuerdo ahora.

usuario11151078
fuente
Marque las partes de su código como código; ¡eso hará que la respuesta sea más legible!
U. Windl