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.

James Andrew
la source
En relation: stackoverflow.com/questions/5585779/…
Rob Hruska

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);
} 
Jon
la source
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());
manuel
la source
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;

Ashish Sahu
la source
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;
Ashish Sahu
la source
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]", ""));
}

la source
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);
} 
Ravi Makvana
la source
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);
Ravi
la source
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); 
Tren Narek
la source
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

Abdul Rizwan
la source
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.
Brett Moan
la source
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);
Joseph Chotard
la source
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

user11151078
la source
Marquez vos parties de code comme code; cela rendra la réponse plus lisible!
U. Windl