การแปลงสตริงเป็นจำนวนเต็มบน Android


182

ฉันจะแปลงสตริงเป็นจำนวนเต็มได้อย่างไร

ฉันมีกล่องข้อความฉันมีผู้ใช้ป้อนหมายเลขลงใน:

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

helloและความคุ้มค่าที่ได้รับมอบหมายสตริง

ฉันต้องการแปลงเป็นจำนวนเต็มเพื่อให้ได้จำนวนที่พิมพ์ มันจะถูกใช้ในภายหลังในรหัส

มีวิธีการรับEditTextจำนวนเต็มหรือไม่ นั่นจะข้ามชายกลาง ถ้าไม่ใช่สตริงถึงจำนวนเต็มจะใช้ได้


ที่เกี่ยวข้อง: stackoverflow.com/questions/5585779/…
Rob Hruska

คำตอบ:


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 มีความปลอดภัยมากกว่านี้หรือไม่
งานกาเบรียลแฟร์


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;

สิ่งที่ฉันกำลังมองหา
Ahamadullah Saikat

9

ใช้การแสดงออกปกติเป็นวิธีที่ดีที่สุดในการทำเช่นนี้ตามที่กล่าวไว้แล้วโดย ashish sahu

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 จากนั้นจะทำงาน .. เนื่องจาก 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


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() grab แล้วคืนค่าจำนวนเต็มจากสตริง Digit-only

นั่นเป็นรหัสที่แย่มากสำหรับหนึ่งบรรทัด (เพียงแค่การตั้งค่าของฉัน)
Patrick M

ใช่ฉันจะไม่ทำอย่างนั้นมันเป็นการอ้างอิงถึงความคิดเห็นที่ "ข้ามชายกลาง" ของ OP มากขึ้น
Brett Moan



2

มีห้าวิธีในการแปลง The First Way:

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 

อาจมีวิธีอื่น แต่นั่นคือสิ่งที่ฉันจำได้ในขณะนี้


ทำเครื่องหมายส่วนรหัสของคุณเป็นรหัส ที่จะทำให้คำตอบอ่านง่ายขึ้น!
U. Windl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.