2011-02-11 10 views

답변

351

Character.getNumericValue(char)을 시도

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

//result: x = 5 

(그냥 예를 들어 있다고 말할 쓸모).

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

는 생산 :

x=5 

좋은 것은 약 getNumericValue(char)٥ 동부 아랍어 힌디어/산스크리트어에서 숫자 5는 각각 어디에 그것은 또한 "el٥""el५" 같은 문자열과 함께 작동합니다.

+0

최고입니다! 감사합니다 – deFreitas

26
아마보기의 성능 관점에서 최선의

하지만 거친 : 당신이 당신의 문자가 숫자입니다 만 항상 자바처럼, 유니 코드를 사용하여 언어로 가정하면

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

그것은 작동 ...

+7

''el5 "'는'5 '가 인도의 숫자 5 인''el5"문자열로 시도해보십시오. :) –

+2

이 예제를 찾기 위해 열심히 노력했다고 확신합니다. :-) 알이 아닌 아라비아 숫자를 구문 분석해야하는 경우이 방법을 사용하지 마십시오. 내가 말했듯이, 그것은 거칠다. 그러나 그것은 99.999 %의 사례에서 여전히 가장 빠른 방법입니다. –

+0

@AlexisDufrenoy, 왜 문자 ''0 '을 뺄 때 정수 값을 반환해야합니까? –

49

는 다음과 같은 시도 :

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

유 문자로 빼기 경우 '0', ASCII 값이 알려질 필요가 없다. 단순히 문자로 감산함으로써

+1

그 이유는 무엇입니까? 결과는 asci에서 '0'과 asci에서 char 사이의 빼기입니다 ??? –

+6

@msj ascii의''0 ','1 ','2 ', ...'값이 오름차순이기 때문에. 그래서 예. ascii의 '0'은 48이고, '1'은 49 등입니다. 따라서 '2'- '0'을 취하면 '50 - 48 = 2 '가됩니다. 이 원칙을 더 잘 이해하려면 ASCII 테이블을보십시오. 또한 'x'는 Java에서 문자의 ascii 값을 가져 오는 것을 의미합니다. –

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

0 (제로) ('9'까지 자리의 '0') 숯불은 예 INT (0-9)로 변환 될 수 '5'- '0 'int 5를 제공합니다.

String str = "123"; 

int a=str.charAt(1)-'0'; 
관련 문제