Je veux juste savoir s'il existe une meilleure solution pour analyser un nombre à partir d'un caractère dans une chaîne (en supposant que nous savons que le caractère à l'index n est un nombre).
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(inutile de dire que ce n'est qu'un exemple)
Essayez Character.getNumericValue(char)
.
String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);
produit:
x=5
La bonne chose à propos de getNumericValue(char)
est qu’il fonctionne également avec des chaînes telles que "el٥"
et "el५"
où ٥
et ५
sont les chiffres 5 en arabe oriental et en hindi/sanscrit respectivement.
Essayez ce qui suit:
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
si vous soustrayez par le caractère '0', la valeur ASCII n'a pas besoin d'être connue.
C'est probablement le meilleur du point de vue des performances, mais c'est difficile:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
Cela fonctionne si vous supposez que votre caractère est un chiffre et uniquement dans les langues utilisant toujours Unicode, comme Java ...
En soustrayant simplement par le caractère '0' (zéro), un caractère (du chiffre '0' à '9') peut être converti en int (0 à 9), par exemple, '5' - '0' donne l'int 5.
String str = "123";
int a=str.charAt(1)-'0';
String a = "jklmn489pjro635ops";
int sum = 0;
String num = "";
boolean notFirst = false;
for (char c : a.toCharArray()) {
if (Character.isDigit(c)) {
sum = sum + Character.getNumericValue(c);
System.out.print((notFirst? " + " : "") + c);
notFirst = true;
}
}
System.out.println(" = " + sum);
String element = "el5";
int x = element.charAt(2) - 48;
Soustraction de la valeur ascii de '0' = 48 du caractère
Utiliser binaire AND
avec 0b1111
:
String element = "el5";
char c = element.charAt(2);
System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9