web-dev-qa-db-fra.com

Java: analyse de la valeur d'un caractère

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)

202
Noya

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५"٥ et sont les chiffres 5 en arabe oriental et en hindi/sanscrit respectivement. 

408
Bart Kiers

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.

55
vashishatashu

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 ...

32
Alexis Dufrenoy

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';
16
Miniraj Shrivastava
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);
6
John McDonald
String element = "el5";
int x = element.charAt(2) - 48;

Soustraction de la valeur ascii de '0' = 48 du caractère

0
Saurabh

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
0
Andriy Tolstoy