2010-04-25 3 views
143

Как преобразовать строку в целое число?Преобразование строки в целое число на Android

У меня есть текстовое поле У меня есть пользователь вводит число в:

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

И присваивается значение строки hello.

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

Есть ли способ получить EditText целому числу? Это пропустит среднего человека. Если нет, строка в целое будет просто прекрасной.

+0

Связанный: http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java –

ответ

356

См класс 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); 
} 
+0

Извините, обновил ответ с помощью переменной назначения ... – Jon

+0

Как насчет использования мануэля ниже? Является ли более безопасным использование parseInt над valueOf? –

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

Вы должны скрывать String для поплавка. Это работает.

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

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

tv.setText(result); 
2

Лучший способ преобразовать строку в ИНТ:

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

Использование регулярных выражений:

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; 
+0

именно то, что я искал. –

19

Используйте регулярное выражение:

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

выход: я = 1234;

Если вам нужна первая комбинация чисел, то вы должны попробовать ниже код:

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

выход: я = 123;

3

Вы можете использовать следующее разобрать строку в целое число:

INT значение = Integer.parseInt (. TextView.getText() ToString());

(1)вход: 12, то он будет работать .. потому что TextView принял это число 12, как "12" строки.

(2) ввод: «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

1

Вы также можете сделать это одна строка:

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() и возьмите n целое из строки только для цифр.
+0

Это очень много кода для одной строки (только мое предпочтение). –

+0

Да, я бы тоже не сделал этого, это была скорее ссылка на комментарий «пропустить средний человек». –

5

Попробуйте этот код, это действительно работает.

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

Использование регулярных выражений является лучшим способом сделать это, как уже упомянуто Ashish Sahu

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

Гораздо более простой метод заключается в использовании decode метод Integer так, например:

int helloInt = Integer.decode(hello); 
Смежные вопросы