Konvertieren einer Zeichenfolge in eine Ganzzahl unter Android

182

Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl?

Ich habe ein Textfeld, in das der Benutzer eine Nummer eingeben muss:

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

Und der Wert wird der Zeichenfolge zugewiesen hello.

Ich möchte es in eine Ganzzahl konvertieren, damit ich die eingegebene Zahl erhalten kann. Es wird später im Code verwendet.

Gibt es eine Möglichkeit EditText, eine Ganzzahl zu erhalten? Das würde den mittleren Mann überspringen. Wenn nicht, ist die Zeichenfolge zur Ganzzahl in Ordnung.

James Andrew
quelle
Siehe auch
Rob Hruska

Antworten:

416

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 jedoch NumberFormatExceptionbei Problemen beim Parsen abfangen , also:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 
Jon
quelle
1
Was ist mit Manuels Weg unten? Ist es sicherer, parseInt über valueOf zu verwenden?
Gabriel Fair
46
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
manuel
quelle
26

Verwenden Sie reguläre Ausdrücke:

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

Ausgabe: i = 1234;

Wenn Sie eine erste Zahlenkombination benötigen, sollten Sie den folgenden Code ausprobieren:

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

Ausgabe: i = 123;

Ashish Sahu
quelle
13

Verwenden Sie reguläre Ausdrücke:

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

Ausgabe:

i=123;
j=123;
k=123;
Ashish Sahu
quelle
genau das, wonach ich gesucht habe.
Ahamadullah Saikat
9

Die Verwendung eines regulären Ausdrucks ist der beste Weg, um dies zu tun, wie bereits von Ashish Sahu erwähnt

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

quelle
8

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);
} 
Ravi Makvana
quelle
6

Der beste Weg, um Ihren String in int umzuwandeln, ist:

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

Sie sollten String verdecken, um zu schweben. Es funktioniert.

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

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

tv.setText(result); 
Tren Narek
quelle
5

Sie können Folgendes verwenden, um eine Zeichenfolge in eine Ganzzahl zu analysieren:

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

(1) Eingabe: 12, dann funktioniert es. Die Textansicht hat diese 12-Zahl als "12" -String verwendet.

(2) Eingabe: "abdul", dann wird eine Ausnahme ausgelöst, die NumberFormatException ist. Um dies zu lösen, müssen wir try catch verwenden, wie ich unten erwähnt habe:

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

Weitere Informationen erhalten Sie unter folgendem Link: http://developer.android.com/reference/java/lang/Integer.html

Abdul Rizwan
quelle
4

Sie können es auch in einer Zeile tun:

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

Lesen aus der Reihenfolge der Ausführung

  1. Schnapp dir die Ansicht mit findViewById(R.id.button1)
  2. Verwenden Sie ((Button)______), um die ViewalsButton
  3. Rufen Sie .GetText() an, um die Texteingabe von Button zu erhalten
  4. Rufen Sie .toString()auf, um das Zeichen in einen String umzuwandeln
  5. Rufen Sie .ReplaceAll()mit "[\\D]"an, um alle nichtstelligen Zeichen durch "" (nichts) zu ersetzen.
  6. Rufen Sie Integer.parseInt()grab auf und geben Sie eine Ganzzahl aus der Nur-Ziffern-Zeichenfolge zurück.
Brett Moan
quelle
Das ist eine Menge Code für eine Zeile (nur meine Präferenz).
Patrick M
Ja, ich würde es auch nicht so machen, es war eher ein Hinweis auf den Kommentar des OP "Überspringen des Mittelmanns".
Brett Moan
3

Die viel einfachere Methode besteht darin, die folgende decodeMethode zu verwenden Integer:

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

Es gibt fünf Möglichkeiten, den ersten Weg umzuwandeln:

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

Der zweite Weg:

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

Der dritte Weg:

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

Der vierte Weg:

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

Der fünfte Weg:

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

Es könnte andere Wege geben. Aber daran erinnere ich mich jetzt

user11151078
quelle
Markieren Sie Ihre Codeteile als Code. das macht die Antwort lesbarer!
U. Windl