Java:从char解析int值

时间:2011-02-11 11:11:09

标签: java parsing char int parseint

我只是想知道是否有更好的解决方案来解析字符串中字符的数字(假设我们知道索引n处的字符是数字)。

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

//result: x = 5

(没用,这只是一个例子)

6 个答案:

答案 0 :(得分:415)

尝试Character.getNumericValue(char)

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

产生

x=5

关于getNumericValue(char)的好处是,它也适用于"el٥""el५"这样的字符串,其中٥是东阿拉伯语中的数字5和印地语/梵文分别。

答案 1 :(得分:56)

尝试以下方法:

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

如果你用char'0'减去,则不需要知道ASCII值。

答案 2 :(得分:32)

从性能的角度来看,这可能是最好的,但它很粗糙:

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

如果你假设你的角色是一个数字,它只能用于总是使用Unicode的语言,比如Java ......

答案 3 :(得分:6)

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);

答案 4 :(得分:0)

将二进制AND0b1111一起使用:

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

答案 5 :(得分:0)

String element = "el5";
int x = element.charAt(2) - 48;

从char中减去'0'= 48的ascii值