Mengubah string menjadi integer di Android

182

Bagaimana cara mengubah string menjadi integer?

Saya memiliki kotak teks. Saya meminta pengguna memasukkan nomor:

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

Dan nilai ditugaskan ke string hello.

Saya ingin mengubahnya menjadi integer sehingga saya bisa mendapatkan nomor yang mereka ketikkan; itu akan digunakan nanti dalam kode.

Apakah ada cara untuk mendapatkan EditTextinteger? Itu akan melewati orang tengah. Jika tidak, string ke integer akan baik-baik saja.

James Andrew
sumber

Jawaban:

417

Lihat kelas Integer dan parseInt()metode statis :

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

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

Anda perlu menangkapnya NumberFormatExceptionjika terjadi masalah saat parsing, jadi:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 
Jon
sumber
1
Bagaimana dengan menggunakan cara manuel di bawah ini? Apakah lebih aman menggunakan parseInt lebih dari valueOf?
Gabriel Fair
46
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
manuel
sumber
26

Gunakan ekspresi reguler:

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

output: i = 1234;

Jika Anda memerlukan kombinasi angka pertama maka Anda harus mencoba kode di bawah ini:

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

output: i = 123;

Ashish Sahu
sumber
13

Gunakan ekspresi reguler:

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

keluaran:

i=123;
j=123;
k=123;
Ashish Sahu
sumber
persis apa yang saya cari.
Ahamadullah Saikat
9

Menggunakan ekspresi reguler adalah cara terbaik untuk melakukan ini sebagaimana telah disebutkan oleh ashish sahu

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

sumber
8

Coba kode ini benar-benar berfungsi.

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

Cara terbaik untuk mengubah string Anda menjadi int adalah:

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

Anda harus String terselubung untuk mengapung. Ini bekerja.

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

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

tv.setText(result); 
Tren Narek
sumber
5

Anda bisa menggunakan yang berikut ini untuk mengurai string ke integer:

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

(1) input: 12 maka akan berfungsi .. karena textview telah menggunakan 12 angka ini sebagai string "12".

(2) masukan: "abdul" maka akan muncul pengecualian yaitu NumberFormatException. Jadi untuk mengatasi ini kita perlu menggunakan try catch seperti yang saya sebutkan di bawah ini:

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

Anda mungkin juga ingin merujuk ke tautan berikut untuk informasi lebih lanjut: http://developer.android.com/reference/java/lang/Integer.html

Abdul Rizwan
sumber
4

Anda juga dapat melakukannya satu baris:

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

Membaca dari urutan eksekusi

  1. ambil tampilan menggunakan findViewById(R.id.button1)
  2. gunakan ((Button)______)untuk melemparkan Viewsebagai aButton
  3. Panggil .GetText() untuk mendapatkan entri teks dari Tombol
  4. Panggilan .toString()untuk mengubah Karakter Memvariasikan ke String
  5. Panggil .ReplaceAll()dengan "[\\D]"untuk mengganti semua Karakter Non Digit dengan "" (tidak ada)
  6. Panggil Integer.parseInt()ambil dan kembalikan integer dari string Digit-only.
Brett Moan
sumber
Itu banyak sekali kode untuk satu baris (hanya preferensi saya).
Patrick M
Ya, saya juga tidak akan melakukannya, itu lebih mengacu pada komentar OP "lewati perantara".
Brett Moan
3

Metode yang jauh lebih sederhana adalah dengan menggunakan decodemetode Integerjadi misalnya:

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

Ada lima cara untuk mengonversi The First Way:

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

Cara kedua:

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

Cara Ketiga:

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

Jalan Keempat:

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

Jalan Kelima:

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

Mungkin ada cara lain Tapi itu yang saya ingat sekarang

pengguna11151078
sumber
Tandai bagian kode Anda sebagai kode; itu akan membuat jawabannya lebih mudah dibaca!
U. Windl