Bir dizeyi Android'de bir tam sayıya dönüştürme


182

Bir dizeyi tamsayıya nasıl dönüştürebilirim?

Bir metin kutusu kullanıcı içine bir sayı girmek var:

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

Ve değer dizeye atanır hello.

Ben yazdım sayı alabilirsiniz böylece bir tamsayı dönüştürmek istiyorum; daha sonra kodda kullanılacaktır.

Tamsayıya ulaşmanın bir yolu var mı EditText? Bu orta adamı atlar. Değilse, tamsayıya dize iyi olur.


Yanıtlar:


417

Integer sınıfına ve statik parseInt()yönteme bakın:

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

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

NumberFormatExceptionAyrıştırma sırasında sorunlar olması durumunda yakalamanız gerekir , bu yüzden:

int myNum = 0;

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

1
Manuel'in yolunu aşağıdaki gibi kullanmaya ne dersiniz? ParseInt over valueOf kullanmak daha güvenli mi?
Gabriel Fuarı

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

26

Normal ifadeyi kullan:

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

çıktı: i = 1234;

İlk sayı kombinasyonuna ihtiyacınız varsa, aşağıdaki kodu denemelisiniz:

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

çıktı: i = 123;


13

Normal ifadeyi kullan:

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

çıktı:

i=123;
j=123;
k=123;

tam olarak aradığım şey.
Ahamadullah Saikat

9

Ashish sahu tarafından daha önce belirtildiği gibi bunu yapmanın en iyi yoludur

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

8

Gerçekten işe yarayan bu kodu deneyin.

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

6

Dizenizi int'e dönüştürmenin en iyi yolu:

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

5

String'i float'a dönüştürmelisiniz. Çalışıyor.

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

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

tv.setText(result); 

5

Bir dizeyi bir tamsayıya ayrıştırmak için aşağıdakileri kullanabilirsiniz:

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

(1) giriş: 12 sonra çalışır .. çünkü textview bu 12 sayıyı "12" dizesi olarak almıştır.

(2) input: "abdul" sonra NumberFormatException olan bir istisna atar. Bu yüzden bunu çözmek için aşağıda belirttiğim gibi try catch kullanmalıyız:

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

Daha fazla bilgi için aşağıdaki bağlantıya da bakmak isteyebilirsiniz: http://developer.android.com/reference/java/lang/Integer.html


4

Ayrıca bir satır da yapabilirsiniz:

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

Yürütme sırasından okuma

  1. kullanarak görünümü yakala findViewById(R.id.button1)
  2. kullanmak ((Button)______)döküm Viewbir şekildeButton
  3. Düğme'den .GetText() metin girişini almak için arayın
  4. .toString()Karakter Değişimini Dizeye Dönüştürme Çağrısı
  5. Çağrı .ReplaceAll()ile "[\\D]"(hiçbir şey) "" Tüm Olmayan Sayı Karakterler yerine
  6. Integer.parseInt()Grab çağırın ve yalnızca Rakam dizesinden bir tamsayı döndürün.

Bu bir satır için çok fazla kod (sadece benim tercihim).
Patrick M

Evet, ben de öyle yapmazdım, OP'nin "orta adamı atla" yorumuna daha fazla atıfta bulundu.
Brett Moan

3

Çok daha basit yöntem, örneğin decodeyöntemini kullanmaktır Integer:

int helloInt = Integer.decode(hello);


2

İlk Yolu dönüştürmenin beş yolu vardır:

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

İkinci yol:

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

Üçüncü Yol:

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

Dördüncü Yol:

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

Beşinci Yol:

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

Başka yollar olabilir ama şu an hatırlıyorum


Kod parçalarınızı kod olarak işaretleyin; Bu, cevabı daha okunabilir hale getirecektir!
U. Windl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.