web-dev-qa-db-de.com

Java: Analysiert den Int-Wert eines Zeichens

Ich möchte nur wissen, ob es eine bessere Lösung gibt, um eine Zahl aus einem Zeichen in einer Zeichenfolge zu analysieren (vorausgesetzt, wir wissen, dass das Zeichen am Index n eine Zahl ist).

String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);

//result: x = 5

(nutzlos zu sagen, dass es nur ein Beispiel ist)

202
Noya

Versuchen Sie Character.getNumericValue(char) .

String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);

produziert:

x=5

Das Schöne an getNumericValue(char) ist, dass es auch mit Strings wie "el٥" und "el५" funktioniert, wobei ٥ und die Ziffern 5 im östlichen Arabisch bzw. Hindi/Sanskrit sind. 

408
Bart Kiers

Versuche Folgendes: 

str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;

wenn Sie mit char '0' subtrahieren, muss der Wert ASCII nicht bekannt sein.

55
vashishatashu

Das ist wahrscheinlich aus Sicht der Leistung das Beste, aber es ist grob:

String element = "el5";
String s;
int x = element.charAt(2)-'0';

Es funktioniert, wenn Sie annehmen, dass Ihr Zeichen eine Ziffer ist, und nur in Sprachen, die immer Unicode verwenden, wie Java.

32
Alexis Dufrenoy

Durch einfaches Subtrahieren von "0" (Null) durch Zeichen kann ein Zeichen (von Ziffern "0" bis "9") in int (0 bis 9) umgewandelt werden, z.

String str = "123";

int a=str.charAt(1)-'0';
16
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;

Subtrahieren des ASCII-Werts von '0' = 48 von char

0
Saurabh

Verwenden der binären AND mit 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