在Android上将字符串转换为整数


182

如何将字符串转换为整数?

我有一个文本框,我让用户输入一个数字:

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

并将该值分配给字符串hello

我想将其转换为整数,以便获得他们键入的数字;稍后将在代码中使用它。

有没有办法得到EditText一个整数?那会跳过中间人。如果不是,则将字符串转换为整数就可以了。


Answers:


416

请参阅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
那下面使用曼纽尔的方式呢?在valueOf上使用parseInt更安全吗?
加百利博览会

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

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

您应该隐藏String才能浮动。这是工作。

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。因此,要解决此问题,我们需要使用try catch,如下所述:

  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)______)将转换ViewButton
  3. 呼叫 .GetText() 以从Button获取文本输入
  4. 呼叫 .toString()以将可变字符转换为字符串
  5. 呼叫.ReplaceAll()"[\\D]"与“”(无),以取代所有的非数字字符
  6. 呼叫Integer.parseInt()获取并从仅数字的字符串中返回一个整数。

一行中有很多代码(仅是我的偏好)。
Patrick M

是的,我也不会那样做,它更多地是引用了OP的“跳过中间人”的评论。
Brett Moan 2014年



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 

可能还有其他方式,但这就是我现在记得的


将您的代码部分标记为代码;这将使答案更具可读性!
U. Windl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.