Conversion d'une chaîne en entier sur Android
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 si je peux 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 entier? Que serait ignorer l'homme du milieu. Si non, chaîne entier fera l'amende juste.
11 réponses
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 devrez attraper NumberFormatException
en 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);
}
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
Utiliser 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 numéros, vous devriez essayer le code ci-dessous:
String s="abc123xyz456";
int i=NumberFormat.getInstance().parse(s).intValue();
Sortie: i = 123;
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]",""));
Sortie:
i=123;
j=123;
k=123;
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);
}
Vous devriez cacher la chaîne pour flotter. Il est de travail.
float result = 0;
if (TextUtils.isEmpty(et.getText().toString()) {
return;
}
result = Float.parseFloat(et.getText().toString());
tv.setText(result);
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);
Vous pouvez utiliser ce qui suit pour analyser une chaîne en entier:
Valeur Int = entier.parseInt (textView.getText ().toString());
(1) entrée: 12 ensuite, il sera.. parce que textview a pris ce numéro 12 comme chaîne" 12".
(2) input: "abdul" alors il va lancer 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 vous référer à la lien suivant pour plus d'informations: http://developer.android.com/reference/java/lang/Integer.html
Vous pouvez également le faire une ligne:
int hello = Integer.parseInt(((Button)findViewById(R.id.button1)).getText().toString().replaceAll("[\\D]", ""));
Lecture de l'ordre d'exécution
- saisir la vue en utilisant
findViewById(R.id.button1)
- utiliser
((Button)______)
pour lancer leView
commeButton
- appelez
.GetText()
pour obtenir l'entrée de texte du bouton - appelez
.toString()
pour convertir le caractère variant en chaîne - appelez
.ReplaceAll()
avec"[\\D]"
pour remplacer tous les caractères Non numériques par "" (rien) - appelez
Integer.parseInt()
grab et renvoyez un entier hors de la chaîne à chiffres seulement.
La méthode beaucoup plus simple est d'utiliser le decode
méthode de Integer
ainsi, par exemple:
int helloInt = Integer.decode(hello);