2010-04-25 6 views
143

Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl?Konvertieren einer Zeichenfolge in eine ganze Zahl unter Android

ich eine Textbox habe ich den Benutzer eine Nummer in eingeben:

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

Und der Wert des hello String zugeordnet ist.

Ich möchte es in eine ganze Zahl umwandeln, damit ich die Zahl erhalten kann, die sie eintippten; Es wird später im Code verwendet.

Gibt es eine Möglichkeit, die EditText zu einer Ganzzahl zu bekommen? Das würde den mittleren Mann auslassen. Wenn nicht, ist string to integer in Ordnung.

+0

Zugehörig: http://StackOverflow.com/Questions/5585779/How-to-convert-string-to-int-in-java –

Antwort

356

Siehe die Integer-Klasse und die statische parseInt() Methode:

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

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

Sie müssen NumberFormatException obwohl im Falle von Problemen zu fangen, während das Parsen, so:

int myNum = 0; 

try { 
    myNum = Integer.parseInt(et.getText().toString()); 
} catch(NumberFormatException nfe) { 
    System.out.println("Could not parse " + nfe); 
} 
+0

Sorry, tat Update Antwort mit Variablenzuweisung ... – Jon

+0

Wie wäre es, Manuel unten zu benutzen? Ist es sicherer, parseInt über valueOf zu verwenden? –

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

Sie sollten String in float konvertieren. Es funktioniert.

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

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

tv.setText(result); 
2

bester Weg, um Ihren String in int zu konvertieren ist:

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

Verwendung regulärer Ausdruck:

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

Ausgang:

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

genau das, was ich gesucht habe. –

19

Verwendung regulärer Ausdruck:

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

output: i = 1234;

Wenn Sie erste Zahlenkombination benötigen, dann sollten Sie unter Code versuchen:

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

Ausgang: i = 123;

3

können Sie die Verwendung nach einer Zeichenfolge auf eine ganze Zahl zu analysieren:

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

(1)Eingang: 12, dann wird es .. arbeiten, weil diese Textview Nummer 12 als "12" string genommen hat.

(2) Eingabe: "abdul", dann wird eine Ausnahme ausgelöst, die NumberFormatException ist. Also, diese zu lösen versuchen wir fangen verwenden müssen, wie ich weiter unten erwähnt haben:

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()); 
     } 

Sie auch weitere Informationen zu den folgenden Link beziehen wollen: http://developer.android.com/reference/java/lang/Integer.html

1

Sie auch tun können, es eine Zeile:

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

von Reihenfolge der Ausführung Lesen

  1. greifen die Ansicht findViewById(R.id.button1)
  2. Verwendung mit ((Button)______) die View als Button
  3. Anruf werfen .GetText() die Texteingabe von Button-
  4. Anruf .ReplaceAll() Wechselnde in einen String
  5. Anruf zu bekommen .toString() das Zeichen zu konvertieren mit "[\\D]" ersetzen Sie alle nicht Ziffern mit "" (nichts)
  6. Anruf Integer.parseInt() greifen und zurück ein i nteger aus der Nur-Ziffern-Zeichenfolge heraus.
+0

Das ist eine Menge Code für eine Zeile (nur meine Vorliebe). –

+0

Aye, ich würde es auch nicht so machen, es war eher ein Hinweis auf den Kommentar des OPs "skip the middle man". –

5

Versuchen Sie diesen Code, es funktioniert wirklich.

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

Verwendung regulärer Ausdruck ist beste Weg, dies wie bereits von ashish erwähnt zu tun Sahu

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

Die viel einfachere Methode, um die decode Verfahren von Integer so zum Beispiel zu verwenden ist:

int helloInt = Integer.decode(hello);