【问题标题】:Converting a string to an integer on Android在 Android 上将字符串转换为整数
【发布时间】:2011-02-12 03:33:18
【问题描述】:

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

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

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

并将值分配给字符串hello

我想把它转换成一个整数,这样我就可以得到他们输入的数字;稍后将在代码中使用。

有没有办法将EditText 转换为整数?那将跳过中间人。如果没有,字符串转整数就可以了。

【问题讨论】:

标签: java android string integer android-edittext


【解决方案1】:

查看 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);
} 

【讨论】:

  • 下面用manuel的方式怎么样?使用 parseInt 而不是 valueOf 更安全吗?
【解决方案2】:
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());

【讨论】:

    【解决方案3】:

    使用正则表达式:

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

    输出: i=1234;

    如果您需要第一个数字组合,那么您应该尝试以下代码:

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

    输出: i=123;

    【讨论】:

      【解决方案4】:

      使用正则表达式:

      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;
      

      【讨论】:

      • 正是我想要的。
      【解决方案5】:

      正如ashish sahu已经提到的那样,使用正则表达式是最好的方法

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

      【讨论】:

        【解决方案6】:

        试试这段代码,它确实有效。

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

        【讨论】:

          【解决方案7】:

          将字符串转换为 int 的最佳方法是:

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

          【讨论】:

            【解决方案8】:

            您应该将字符串转换为浮动。它正在工作。

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

            【讨论】:

              【解决方案9】:

              您可以使用以下方法将字符串解析为整数:

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

              (1) input: 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

              【讨论】:

                【解决方案10】:

                你也可以一行来做:

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

                从执行顺序读取

                1. 使用findViewById(R.id.button1)获取视图
                2. 使用((Button)______)View 转换为Button
                3. 调用.GetText()从Button获取文本输入
                4. 调用 .toString() 将 Character Varying 转换为字符串
                5. "[\\D]" 调用.ReplaceAll() 将所有非数字字符替换为“”(无)
                6. 调用 Integer.parseInt() 并从纯数字字符串中返回一个整数。

                【讨论】:

                • 一行代码有很多(只是我的偏好)。
                • 是的,我也不会那样做,它更像是对 OP 的“跳过中间人”评论的引用。
                【解决方案11】:

                有五种转换方式 第一种方式:

                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 
                

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

                【讨论】:

                • 将您的代码部分标记为代码;这将使答案更具可读性!
                【解决方案12】:

                更简单的方法是使用Integerdecode 方法,例如:

                int helloInt = Integer.decode(hello);
                

                【讨论】:

                  【解决方案13】:

                  科特林

                  有可用的扩展方法将它们解析为其他原始类型。

                  Java

                  String num = "10";
                  Integer.parseInt(num );
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-09-17
                    • 1970-01-01
                    • 2013-12-29
                    • 2012-02-21
                    • 2010-12-31
                    相关资源
                    最近更新 更多