2010-04-25 37 views
143

Làm cách nào để chuyển đổi chuỗi thành số nguyên?Chuyển đổi chuỗi thành số nguyên trên Android

Tôi có một textbox Tôi có người sử dụng nhập số vào:

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

Và giá trị được gán cho chuỗi hello.

Tôi muốn chuyển đổi thành số nguyên để tôi có thể lấy số mà họ đã nhập; nó sẽ được sử dụng sau này trong mã.

Có cách nào để lấy số EditText thành số nguyên không? Điều đó sẽ bỏ qua người đàn ông trung gian. Nếu không, chuỗi thành số nguyên sẽ là tốt.

+0

Liên quan: http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java –

Trả lời

356

Xem lớp Integer và tĩnh parseInt() phương pháp:

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

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

Bạn sẽ cần phải bắt NumberFormatException mặc dù trong trường hợp của các vấn đề trong khi phân tích cú pháp, vì vậy:

int myNum = 0; 

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

Xin lỗi, đã cập nhật câu trả lời với bài tập thay đổi ... – Jon

+0

Còn cách sử dụng manuel thì sao? Có an toàn hơn khi sử dụng parseInt trên valueOf không? –

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

Bạn nên bí mật Chuỗi thả nổi. Nó đang làm việc.

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

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

tv.setText(result); 
2

Cách tốt nhất để chuyển đổi chuỗi của bạn vào int là:

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

Sử dụng biểu thức chính quy:

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

đầu ra:

i=123; 
j=123; 
k=123; 
+0

chính xác những gì tôi đang tìm kiếm. –

19

Sử dụng biểu thức chính quy:

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

đầu ra: i = 1234;

Nếu bạn cần kết hợp số đầu tiên sau đó bạn nên cố gắng bên dưới mã:

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

đầu ra: i = 123;

3

Bạn có thể sử dụng sau đây để phân tích một chuỗi thành một số nguyên:

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

(1)đầu vào: 12 sau đó nó sẽ làm việc .. vì TextView đã đưa ra con số này 12 như "12" chuỗi.

(2) đầu vào: "abdul" sau đó nó sẽ ném một ngoại lệ là NumberFormatException. Vì vậy, để giải quyết điều này chúng ta cần phải sử dụng cố gắng nắm bắt như tôi có đề cập dưới đây:

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

Bạn cũng có thể muốn tham khảo liên kết sau để biết thêm thông tin: http://developer.android.com/reference/java/lang/Integer.html

1

Bạn cũng có thể làm nó trở thành một dòng:

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

Đọc từ tự thực hiện

  1. lấy quan điểm sử dụng findViewById(R.id.button1)
  2. sử dụng ((Button)______) cast View như một Button
  3. Gọi .GetText() để có được sự xâm nhập văn bản từ nút
  4. Gọi .toString() để chuyển đổi các nhân vật khác nhau để một String
  5. Gọi .ReplaceAll() với "[\\D]" để thay thế tất cả các ký tự không phải chữ số bằng "" (không có gì)
  6. Gọi Integer.parseInt() lấy và trả lại i nteger trong chuỗi chỉ có chữ số.
+0

Đó là một mã khủng khiếp cho một dòng (chỉ là sở thích của tôi). –

+0

Aye, tôi sẽ không làm theo cách đó, nó là một tham chiếu đến ý kiến ​​"bỏ qua người đàn ông trung gian" của OP. –

5

Hãy thử mã này thực sự hiệu quả.

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

Sử dụng biểu thức chính quy là cách tốt nhất để làm điều này như đã đề cập bởi ashish Sahu

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

Phương pháp đơn giản hơn nhiều là sử dụng phương pháp decode của Integer để ví dụ:

int helloInt = Integer.decode(hello); 
Các vấn đề liên quan