204 votes

Convertir une chaîne de caractères en un nombre entier sur Android

Comment convertir une chaîne de caractères en un nombre entier ?

J'ai une zone de texte dans laquelle l'utilisateur doit entrer un nombre :

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

Et la valeur est assignée à la chaîne de caractères hello .

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

Existe-t-il un moyen d'obtenir le EditText à un nombre entier ? Cela permettrait d'éviter l'intermédiaire. Si ce n'est pas le cas, la conversion d'une chaîne de caractères en un nombre entier fera l'affaire.

0 votes

454voto

Jon Points 23749

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

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

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

Vous devrez attraper NumberFormatException mais en cas de problèmes lors de l'analyse, alors :

int myNum = 0;

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

1 votes

Pourquoi ne pas utiliser la méthode de Manuel ci-dessous ? Est-il plus sûr d'utiliser parseInt plutôt que valueOf ?

51voto

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

28voto

Ashish Sahu Points 237

Utiliser une expression régulière :

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

de la production : i=1234 ;

Si vous avez besoin de la première combinaison de chiffres, essayez le code ci-dessous :

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

de la production : i=123 ;

13voto

Ashish Sahu Points 237

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

de la production :

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

0 votes

Exactement ce que je cherchais.

7voto

Ravi Points 99

La meilleure façon de convertir une chaîne de caractères en int est :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X