2010-04-25 32 views
143

¿Cómo convierto una cadena en un número entero?Convertir una cadena a un entero en Android

Tengo un cuadro de texto que tienen al usuario introducir un número en:

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

Y se le asigna el valor a la cadena de hello.

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

¿Hay alguna manera de obtener el número EditText en un número entero? Eso se saltaría al hombre del medio. Si no, cadena a entero estará bien.

+0

Relacionado: http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java –

Respuesta

356

consulte la clase entera y la parseInt() método estático:

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

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

Tendrá que coger NumberFormatException aunque en caso de problemas, mientras que 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); 
} 
+0

Lo sentimos, ¿actualizó la respuesta con la asignación de variable ... – Jon

+0

¿Qué pasa con el uso de manuel a continuación? ¿Es más seguro usar parseInt sobre valueOf? –

34
int in = Integer.valueOf(et.getText().toString()); 
//or 
int in2 = new Integer(et.getText().toString()); 
2

Debe 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); 
2

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); 
9

Uso de expresiones regulares:

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

de salida:

i=123; 
j=123; 
k=123; 
+0

exactamente lo que estaba buscando. –

19

Uso expresión regular:

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

salida: i = 1234;

Si usted necesita primeros combinación de números a continuación, usted debe tratar a continuación código:

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

de salida: i = 123;

3

Puede utilizar el siguiente para analizar una cadena a un entero:

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

(1)de entrada: 12 entonces todo funcionará .. porque TextView ha tomado este número 12 como cadena "12".

(2) entrada: "abdul" arrojará una excepción que es NumberFormatException. Así que para resolver este tenemos que utilizar intento de captura ya que tengo mencionan 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 es posible que desee consultar el siguiente enlace para más información: http://developer.android.com/reference/java/lang/Integer.html

1

También se puede hacer que una línea:

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

lectura de orden de ejecución

  1. agarrar la vista utilizando findViewById(R.id.button1)
  2. uso ((Button)______) a emitir el View como Button
  3. llamada .GetText() para conseguir la introducción de texto de botón
  4. llamada .toString() para convertir el carácter variable para una cadena
  5. llamada .ReplaceAll() con "[\\D]" para reemplazar todos los caracteres que no sean dígitos con "" (nada)
  6. Llamar Integer.parseInt() agarrar y devolver un i nteger fuera de la cadena Solo dígitos.
+0

Eso es una gran cantidad de código para una línea (solo mi preferencia). –

+0

Sí, tampoco lo haría de esa manera, era más una referencia al comentario de "omita al intermediario" del OP. –

5

Pruebe 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); 
} 
6

Uso de expresiones regulares es la mejor manera de hacer esto como ya se ha mencionado por Ashish Sahu

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

El método más simple es utilizar el método de Integerdecode así por ejemplo:

int helloInt = Integer.decode(hello); 
Cuestiones relacionadas