web-dev-qa-db-fra.com

Conversion d'une chaîne en un entier sur Android

Comment convertir une chaîne en entier?

J'ai une zone de texte dans laquelle l'utilisateur doit entrer un numéro:

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

Et la valeur est assignée à la chaîne hello.

Je veux le convertir en entier pour pouvoir obtenir le nombre tapé; il sera utilisé plus tard dans le code.

Existe-t-il un moyen d'obtenir la EditText en un entier? Cela éviterait l'homme du milieu. Sinon, chaîne en entier sera très bien.

171
James Rattray

Voir la classe Integer et la méthode statique parseInt():

http://developer.Android.com/reference/Java/lang/Integer.html

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

Vous aurez besoin d'attraper NumberFormatException bien qu'en cas de problèmes lors de l'analyse syntaxique, donc:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 
396
Jon
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
41
manuel

tilisez une expression régulière:

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

sortie: i = 1234;

Si vous avez besoin d'une première combinaison de chiffres, vous devriez essayer le code ci-dessous:

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

sortie: i = 123;

24
Ashish Sahu

tilisez une expression régulière:

int i=Integer.parseInt("hello123".replaceAll("[\\D]",""));
int j=Integer.parseInt("123hello".replaceAll("[\\D]",""));
int k=Integer.parseInt("1h2el3lo".replaceAll("[\\D]",""));

sortie:

i=123;
j=123;
k=123;
11
Ashish Sahu

Utiliser une expression régulière est le meilleur moyen de le faire, comme mentionné par ashish sahu

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

Essayez ce code ça marche vraiment.

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

Le meilleur moyen de convertir votre chaîne en int est:

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

Vous pouvez utiliser ce qui suit pour analyser une chaîne en un entier:

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

(1) entrée: 12 alors cela fonctionnera .. car textview a pris ce numéro comme "12" chaîne.

(2) input: "abdul" alors il lève une exception qui est NumberFormatException. Donc, pour résoudre ce problème, nous devons utiliser try catch, comme indiqué ci-dessous:

  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());
       }

Vous pouvez également vouloir consulter le lien suivant pour plus d'informations: http://developer.Android.com/reference/Java/lang/Integer.html

4
Abdul Rizwan

Vous devriez convertir String en float. Ça fonctionne.

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

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

tv.setText(result); 
4
Tren Narek

Vous pouvez aussi le faire en une ligne:

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

Lecture de l'ordre d'exécution

  1. saisir la vue en utilisant findViewById(R.id.button1)
  2. utilisez ((Button)______) pour convertir la View en Button
  3. Appelez .GetText() pour obtenir l'entrée de texte de Button
  4. Appelez .toString() pour convertir le caractère en chaîne
  5. Appelez .ReplaceAll() avec "[\\D]" pour remplacer tous les caractères non numériques par "" (rien)
  6. Appelez Integer.parseInt() récupérez et renvoyez un entier en dehors de la chaîne à chiffres uniquement.
3
Brett Moan

La méthode beaucoup plus simple consiste à utiliser la méthode decode de Integer ainsi, par exemple:

int helloInt = Integer.decode(hello);
2
Joseph Chotard

Kotlin

Il existe des méthodes d'extension disponibles pour les analyser dans d'autres types primitifs.

Java

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

Il y a cinq façons de convertir The First Way:

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

La deuxième façon:

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

La troisième voie:

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

La quatrième voie:

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

La cinquième voie:

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

Il pourrait y avoir d'autres moyens, mais c'est ce dont je me souviens maintenant.

1
user11151078