Перетворення рядка в ціле число на Android


182

Як перетворити рядок у ціле число?

У мене є текстове поле, у якого користувач вводить номер:

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

І значення присвоюється рядку hello.

Я хочу перетворити його на ціле число, щоб я міг отримати число, яке вони ввели; він буде використаний пізніше в коді.

Чи є спосіб отримати EditTextціле число? Це пропустило б середнього чоловіка. Якщо ні, рядок до цілого числа буде просто чудовим.


Відповіді:


417

Дивіться клас Integer та статичний parseInt()метод:

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

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

Вам потрібно буде зловити, NumberFormatExceptionхоча у випадку проблем під час розбору, так:

int myNum = 0;

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

1
А що з використанням способу Мануеля нижче? Чи безпечніше використовувати parseInt над valueOf?
Ярмарок Габріеля


26

Використовуйте регулярний вираз:

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

вихід: i = 1234;

Якщо вам потрібна комбінація перших цифр, то слід спробувати нижче код:

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

вихід: i = 123;


13

Використовуйте регулярний вираз:

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

вихід:

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

саме те, що я шукав.
Агамадулла Сайкат

9

Використовувати регулярне вираження - найкращий спосіб зробити це, як уже згадував асиш саху

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

8

Спробуйте цей код, він справді працює.

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

6

Найкращий спосіб перетворення рядка в int:

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

5

Ви повинні приховати струну плавати. Це працює.

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

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

tv.setText(result); 

5

Ви можете використовувати наступне для розбору рядка до цілого числа:

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

(1) вхід: 12, тоді він буде працювати .. тому що перегляд тексту прийняв це число 12 як рядок "12".

(2) input: "abdul", тоді він викине виняток, що є NumberFormatException. Тому для вирішення цього питання нам потрібно використовувати спробу лову, як я вже згадував нижче:

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

Для отримання додаткової інформації можна також скористатися наступним посиланням: http://developer.android.com/reference/java/lang/Integer.html


4

Ви також можете зробити це одним рядком:

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

Читання з порядку виконання

  1. захопити перегляд за допомогою findViewById(R.id.button1)
  2. використовувати ((Button)______)для анотації ViewякButton
  3. Зателефонуйте, .GetText() щоб отримати текст із кнопки
  4. Виклик .toString()для перетворення змінних символів у рядок
  5. Виклик .ReplaceAll()з "[\\D]"замінити всі символи значного номера з «» (нічого)
  6. Integer.parseInt()Захоплення виклику та повернення цілого числа із рядка, що містить лише цифру.

Це надзвичайно багато коду для одного рядка (лише моє вподобання).
Патрік М

Так, я б і так не зробив, це було більше посиланням на коментар ОП "пропустити середнього чоловіка".
Бретт Моан

3

Набагато простішим методом є використання decodeметоду Integerтак, наприклад:

int helloInt = Integer.decode(hello);


2

Існує п'ять способів перетворення першого шляху:

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

Другий спосіб:

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

Третій шлях:

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

Четвертий шлях:

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

П'ятий шлях:

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

Можуть бути й інші способи, але це я зараз пам’ятаю


Позначте частини коду як код; це зробить відповідь більш зрозумілою!
У. Віндл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.