Java: значение parse int из char
Я просто хочу знать, есть ли лучшее решение для разбора числа из символа в строке (при условии, что мы знаем, что символ с индексом n является числом).
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(бесполезно говорить, что это всего лишь пример)
Ответы
Ответ 1
Попробуйте 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 на восточном арабском и хинди/санскрите соответственно.
Ответ 2
Попробуйте следующее:
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
если u вычесть из char '0', значение ASCII не должно быть известно.
Ответ 3
Это, вероятно, лучшее из точки зрения производительности, но оно грубо:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
Он работает, если вы предполагаете, что ваш символ является цифрой, и только на языках, всегда использующих Unicode, например Java...
Ответ 4
Просто вычитая char '0' (ноль) a char (цифры от 0 до 9) можно преобразовать в int (от 0 до 9), например, '5' - '0 'дает int 5.
String str = "123";
int a=str.charAt(1)-'0';
Ответ 5
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
Используя двоичное 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
Ответ 7
String element = "el5";
int x = element.charAt(2) - 48;
Вычитая значение ascii '0' = 48 из char