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

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

//result: x = 5

(说它只是一个例子没用)


当前回答

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

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

其他回答

使用二进制与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

尝试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。

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

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

如果你假设你的字符是一个数字,并且只在总是使用Unicode的语言中工作,比如Java…

试试下面的方法:

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

如果你减去字符'0',ASCII值不需要知道。

通过简单地减去字符'0'(零),一个字符(数字'0'到'9')可以转换为int(0到9),例如,'5'-'0'给出int 5。

String str = "123";

int a=str.charAt(1)-'0';