Answers:
尝试Character.getNumericValue(char)
。
String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);
产生:
x=5
令人高兴的getNumericValue(char)
是,它还可以与字符串一起使用,例如"el٥"
and "el५"
,٥
并且where 和५
are分别是东部阿拉伯语和北印度语/梵语中的数字5。
请尝试以下操作:
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
如果u用char'0'减去,则不需要知道ASCII值。
'0', '1', '2', ...
in ascii中的值是递增的。因此,如“0”的ASCII是48,“1”是49,等等。所以,如果你把'2' - '0'
你真的只得到50 - 48 = 2
。查看ASCII表以更好地理解该原理。另外,'x'
意味着获取Java中字符的ascii值。
- '0'
...我认为这对Java解释char或任何其他方式来说是一种深奥的魔力...这确实是我使事情复杂化的一个案例...
Character.getNumericValue
从性能的角度来看,这可能是最好的,但这很粗糙:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
如果您假设字符是数字,并且仅在始终使用Unicode的语言(例如Java)中运行,则此方法有效。
"el५"
哪里५
的数字where 字符串5。:)
'0'
返回整数值?
通过简单地用char'0'(零)减去一个char(数字'0'至'9')可以将其转换为int(0至9),例如'5'-'0'给出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);
使用二进制AND
有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