Konwertowanie ciągu na liczbę całkowitą w systemie Android

182

Jak przekonwertować ciąg na liczbę całkowitą?

Mam pole tekstowe, w którym użytkownik musi wprowadzić numer w:

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

A wartość jest przypisana do ciągu hello.

Chcę przekonwertować go na liczbę całkowitą, aby uzyskać numer, który wpisali; zostanie użyty później w kodzie.

Czy istnieje sposób na uzyskanie EditTextliczby całkowitej? Pominąłoby to środkowego człowieka. Jeśli nie, ciąg znaków do liczby całkowitej będzie w porządku.

James Andrew
źródło

Odpowiedzi:

417

Zobacz klasę całkowitą i parseInt()metodę statyczną :

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

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

Będziesz jednak musiał złapać NumberFormatExceptionw razie problemów podczas analizowania, więc:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 
Jon
źródło
1
Co powiesz na użycie manuela poniżej? Czy bezpieczniej jest używać parseInt zamiast valueOf?
Gabriel Fair
46
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
manuel
źródło
26

Użyj wyrażenia regularnego:

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

wyjście: i = 1234;

Jeśli potrzebujesz kombinacji pierwszego numeru, spróbuj poniżej kodu:

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

wyjście: i = 123;

Ashish Sahu
źródło
13

Użyj wyrażenia regularnego:

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

wynik:

i=123;
j=123;
k=123;
Ashish Sahu
źródło
dokładnie to, czego szukałem.
Ahamadullah Saikat,
9

Używanie wyrażeń regularnych jest najlepszym sposobem na zrobienie tego, jak już wspomniano przez ashish sahu

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

źródło
8

Wypróbuj ten kod, który naprawdę działa.

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

Najlepszym sposobem na konwersję łańcucha na int jest:

 EditText et = (EditText) findViewById(R.id.entry1);
 String hello = et.getText().toString();
 int converted=Integer.parseInt(hello);
Ravi
źródło
5

Powinieneś ukryć String, aby się unosić. To działa.

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

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

tv.setText(result); 
Tren Narek
źródło
5

Aby przeanalizować ciąg znaków na liczbę całkowitą, możesz użyć następujących poleceń:

int wartość = Integer.parseInt (textView.getText (). toString ());

(1) wejście: 12, to zadziała .. ponieważ textview przyjął tę liczbę 12 jako ciąg „12”.

(2) input: „abdul”, wówczas wygeneruje wyjątek, którym jest NumberFormatException. Aby rozwiązać ten problem, musimy użyć try catch, jak wspomniałem poniżej:

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

Aby uzyskać więcej informacji, możesz również skorzystać z następującego łącza: http://developer.android.com/reference/java/lang/Integer.html

Abdul Rizwan
źródło
4

Możesz to również zrobić w jednym wierszu:

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

Odczyt z kolejności wykonania

  1. złap widok za pomocą findViewById(R.id.button1)
  2. użyj, ((Button)______)aby rzucić ViewjakoButton
  3. Zadzwoń, .GetText() aby uzyskać wpis tekstu z przycisku
  4. Wywołanie, .toString()aby przekształcić zmienną znakową w ciąg znaków
  5. Zadzwoń .ReplaceAll()z, "[\\D]"aby zastąpić wszystkie znaki inne niż cyfry znakiem „” (nic)
  6. Wywołaj Integer.parseInt()grab i zwróci liczbę całkowitą z ciągu tylko cyfry.
Brett Moan
źródło
To okropnie dużo kodu dla jednej linii (tylko moje preferencje).
Patrick M
Tak, nie zrobiłbym tego w ten sposób, było to raczej odniesienie do komentarza OP „pomiń środkowego człowieka”.
Brett Moan
3

Znacznie prostszą metodą jest użycie decodemetody Integer, na przykład:

int helloInt = Integer.decode(hello);
Joseph Chotard
źródło
2

Istnieje pięć sposobów konwersji Pierwszego sposobu:

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

Drugi sposób:

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

Trzecia droga:

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

Czwarta droga:

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

Piąta droga:

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

Mogą być inne sposoby Ale teraz to pamiętam

użytkownik 11151078
źródło
Oznacz części kodu jako kod; dzięki temu odpowiedź będzie bardziej czytelna!
U. Windl