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.
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);
}
int in = Integer.valueOf(et.getText().toString());
//or
int in2 = new Integer(et.getText().toString());
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;
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;
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]", ""));
}
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);
}
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);
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
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);
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
findViewById(R.id.button1)
((Button)______)
pour convertir la View
en Button
.GetText()
pour obtenir l'entrée de texte de Button.toString()
pour convertir le caractère en chaîne.ReplaceAll()
avec "[\\D]"
pour remplacer tous les caractères non numériques par "" (rien)Integer.parseInt()
récupérez et renvoyez un entier en dehors de la chaîne à chiffres uniquement.La méthode beaucoup plus simple consiste à utiliser la méthode decode
de Integer
ainsi, par exemple:
int helloInt = Integer.decode(hello);
Il existe des méthodes d'extension disponibles pour les analyser dans d'autres types primitifs.
"10".toInt()
"10".toLong()
"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
String num = "10";
Integer.parseInt(num );
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.