Conversion d'une chaîne en entier sur Android


182

Comment convertir une chaîne en entier?

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

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

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

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

Existe-t-il un moyen d'obtenir EditTextun entier? Cela ignorerait l’intermédiaire. Sinon, une chaîne à un entier conviendra parfaitement.


Réponses:


422

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

http://developer.android.com/reference/java/lang/Integer.html

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

Vous aurez besoin d'attraper NumberFormatExceptionen cas de problèmes lors de l'analyse, donc:

int myNum = 0;

try {
    myNum = Integer.parseInt(et.getText().toString());
} catch(NumberFormatException nfe) {
   System.out.println("Could not parse " + nfe);
} 

1
Qu'en est-il de l'utilisation de manuel ci-dessous? Est-il plus sûr d'utiliser parseInt sur valueOf?
Gabriel Fair

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

26

Utilisez une expression régulière:

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

sortie: i = 1234;

Si vous avez besoin de la 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;


13

Utilisez 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]",""));

production:

i=123;
j=123;
k=123;

exactement ce que je cherchais.
Ahamadullah Saikat

9

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

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

8

Essayez ce code, il fonctionne vraiment.

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

6

La meilleure façon 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

Vous devez convertir String pour qu'il flotte. Ça fonctionne.

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

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

tv.setText(result); 

5

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

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

(1) entrée: 12 alors cela fonctionnera .. parce que textview a pris ce nombre 12 comme chaîne de "12".

(2) input: "abdul" alors il lancera une exception qui est NumberFormatException. Donc, pour résoudre ce problème, nous devons utiliser try catch comme je l'ai mentionné 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 consulter le lien suivant pour plus d'informations: http://developer.android.com/reference/java/lang/Integer.html


4

Vous pouvez également le faire sur une seule ligne:

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

Lecture à partir de l'ordre d'exécution

  1. saisir la vue en utilisant findViewById(R.id.button1)
  2. utiliser ((Button)______)pour lancer le Viewcomme unButton
  3. Appelez .GetText() pour obtenir l'entrée de texte de Button
  4. Appel .toString()pour convertir le caractère variant en chaîne
  5. Appelez .ReplaceAll()avec "[\\D]"pour remplacer tous les caractères non numériques par "" (rien)
  6. Appelez Integer.parseInt()grab et retournez un entier hors de la chaîne Digit-only.

C'est énormément de code pour une ligne (juste ma préférence).
Patrick M

Oui, je ne le ferais pas de cette façon non plus, c'était plutôt une référence au commentaire du PO "sauter le milieu".
Brett Moan

3

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

int helloInt = Integer.decode(hello);


2

Il existe cinq façons de convertir la première manière:

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


Marquez vos parties de code comme code; cela rendra la réponse plus lisible!
U. Windl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.