201

文字列を整数に変換するにはどうすればよいですか?

ユーザーに番号を入力してもらうテキストボックスがあります。

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

そして、値は文字列に割り当てられますhello

入力した数値を取得できるように、整数に変換したいと思います。後でコードで使用されます。

EditTextを整数にする方法はありますか?それは仲買人をスキップするでしょう。そうでない場合は、文字列から整数への変換で問題ありません。

4

13 に答える 13

451

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);
} 
于 2010-04-25T18:01:36.220 に答える
49
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
于 2011-03-31T08:12:43.327 に答える
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;

于 2014-03-15T13:47:19.943 に答える
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;
于 2014-01-31T19:41:18.077 に答える
9

ashish sahuがすでに述べたように、これを行うには正規表現を使用するのが最善の方法です。

public int getInt(String s){
return Integer.parseInt(s.replaceAll("[\\D]", ""));
}
于 2015-03-02T03:11:08.890 に答える
8

このコードを試してみてください。実際に機能しています。

int number = 0;
try {
    number = Integer.parseInt(YourEditTextName.getText().toString());
} catch(NumberFormatException e) {
   System.out.println("parse value is not valid : " + e);
} 
于 2014-11-17T10:13:11.773 に答える
7

文字列をintに変換する最良の方法は次のとおりです。

 EditText et = (EditText) findViewById(R.id.entry1);
 String hello = et.getText().toString();
 int converted=Integer.parseInt(hello);
于 2014-01-10T08:56:11.200 に答える
5

文字列を隠して浮かせる必要があります。動作しています。

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

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

tv.setText(result); 
于 2013-10-17T05:46:28.473 に答える
5

以下を使用して、文字列を整数に解析できます。

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

(1) 入力: 12それなら動作します..textviewはこの12の数字を「12」の文字列と見なしているためです。

(2)入力: "abdul"すると、NumberFormatExceptionという例外がスローされます。したがって、これを解決するには、以下で説明するように、trycatchを使用する必要があります。

  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

于 2014-06-01T08:43:26.413 に答える
4

1行で実行することもできます。

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()変化する文字を文字列に変換するための呼び出し
  5. を呼び出し.ReplaceAll()"[\\D]"、すべての非数字文字を「」(なし)に置き換えます
  6. Integer.parseInt()grabを呼び出して、数字のみの文字列から整数を返します。
于 2014-10-28T05:57:08.097 に答える
4

最初の方法を変換する5つの方法があります:

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

2番目の方法:

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

第三の道:

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

4番目の方法:

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

5番目の方法:

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

他の方法もあるかもしれませんが、それは私が今覚えていることです

于 2019-03-04T23:51:04.463 に答える
3

はるかに簡単な方法は、たとえば次decodeのような方法を使用することです。Integer

int helloInt = Integer.decode(hello);
于 2017-02-09T16:26:45.600 に答える
3

Kotlin

それらを他のプリミティブ型に解析するために利用可能なExtensionメソッドがあります。

Java

String num = "10";
Integer.parseInt(num );
于 2018-10-29T08:00:57.417 に答える