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.


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

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

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;


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;

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]", ""));
}

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

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

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

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


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.

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


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


Markieren Sie Ihre Codeteile als Code. das macht die Antwort lesbarer!
U. Windl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.