문자열의 문자에서 숫자를 구문 분석하는 더 나은 솔루션이 있는지 알고 싶습니다 (색인 n의 문자가 숫자라는 것을 가정 할 때).
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(이것은 단지 예라고 말할 수는 없습니다)
답변
시도하십시오 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가 각각있다.
답변
다음을 시도하십시오 :
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
문자 ‘0’으로 u를 빼면 ASCII 값을 알 필요가 없습니다.
답변
아마도 성능 측면에서 최고 일 것입니다.
String element = "el5";
String s;
int x = element.charAt(2)-'0';
문자가 숫자라고 가정하고 Java와 같이 항상 유니 코드를 사용하는 언어에서만 작동합니다 …
답변
단순히 문자 ‘0’(제로)을 빼면 숫자 ‘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
답변
String element = "el5";
int x = element.charAt(2) - 48;
char에서 ascii 값 ‘0’= 48 빼기