Chuyển đổi một chuỗi thành một số nguyên trên Android


182

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

Tôi có một hộp văn bản Tôi có người dùng nhập một 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 nó thành một số nguyên để tôi có thể lấy số họ đã gõ; nó sẽ được sử dụng sau này trong mã.

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


Câu trả lời:


417

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

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

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

Bạn sẽ cần nắm bắt NumberFormatExceptionmặc dù trong trường hợp 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);
} 

1
Điều gì về cách sử dụng manuel dưới đây? Có an toàn hơn khi sử dụng parseInt trên valueOf không?
Hội chợ Gabriel

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

26

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 thì bạn nên thử mã dưới đây:

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

đầu ra: i = 123;


13

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;

Chính xác những gì tôi đang tìm kiếm.
Ahamadullah Saikat

9

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 đề cập bởi ashish sahu

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

8

Hãy thử mã này nó thực sự hoạt động.

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

6

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

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

5

Bạn nên chuyển đổi String để 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); 

5

Bạn có thể sử dụng cách sau để 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 thì nó sẽ hoạt động .. vì textview đã lấy số 12 này làm chuỗi "12".

(2) đầu vào: "abdul" thì nó sẽ đưa ra một ngoại lệ đó là NumberFormatException. Vì vậy, để giải quyết vấn đề này, chúng ta cần sử dụng thử bắt như tôi đã đề 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


4

Bạn cũng có thể làm điều đó một dòng:

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

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

  1. lấy quan điểm bằng cách sử dụng findViewById(R.id.button1)
  2. sử dụng ((Button)______)để đúc Viewnhư là mộtButton
  3. Gọi .GetText() để nhận mục nhập văn bản từ Nút
  4. Gọi .toString()để chuyển đổi ký tự thay đổi thành chuỗi
  5. Gọi .ReplaceAll()với "[\\D]"để thay thế tất cả các ký tự không có chữ số bằng "" (không có gì)
  6. Gọi Integer.parseInt()lấy và trả về một số nguyên từ chuỗi chỉ Số.

Đó là rất nhiều mã cho một dòng (chỉ là sở thích của tôi).
Patrick M

Vâng, tôi cũng sẽ không làm theo cách đó, nó liên quan nhiều hơn đến bình luận "bỏ qua người trung gian" của OP.
Brett Moan

3

Phương pháp đơn giản hơn nhiều là sử dụng decodephương thức Integernhư vậy chẳng hạn:

int helloInt = Integer.decode(hello);


2

Có năm cách để chuyển đổi Cách thứ nhất:

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

Cách thứ hai:

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

Cách thứ ba:

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

Cách thứ tư:

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

Cách thứ năm:

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

Có thể có những cách khác Nhưng đó là những gì tôi nhớ bây giờ


Đánh dấu các phần mã của bạn là mã; Điều đó sẽ làm cho câu trả lời dễ đọc hơn!
U. Windl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.