2013-03-10 12 views
2

내 문자열에서 정수 값을 얻고 싶습니다. 아래는 나의 예입니다.자바 문자열에서 정수 값을 얻을

String strScore = "Your score is 10. Probability in the next 2 years is 40%"; 

하지만 점수 10 점을 얻고 싶습니다. 어떻게해야합니까? 업데이트]

는 :

String firstNumber = strScore.replaceFirst(".*?(\\d+).*", "$1"); 

bfLog.createEntry(firstNumber); 

내가 SQLite는 데이터베이스에이를 저장합니다.

+0

'문자열()'와'같이 IndexOf를()'? –

+0

이 문자열은 정적입니까? IE. 항상이 형식입니까? –

+0

Eng.Found에 추가하기 - 그것이 무엇인지 알려주면 논리와 정규 표현식이 될 수 있습니다. –

답변

10

당신은 captured group의 첫 번째 자리를 캡처 replace 메소드 String 정규식 중 하나를 사용할 수 있습니다 :

String firstNumber = strScore.replaceFirst(".*?(\\d+).*", "$1"); 
당신의 문자열에 다른 재료의 변경, 당신은 정규 표현식을 사용한다 경우
  • .*?은 초기 자릿수가 아닌 숫자를 사용합니다 (욕심이 없습니다).
  • 그룹에있는 하나 이상의 가용 숫자!
  • .* 그 밖의 모든 것 (욕심 꾸러기).
+0

당신이 제공 한 코드를 약간 설명 할 수 있겠는가? 이후 어떻게 작동하는지 이해하고 싶습니다. 감사. –

+0

그래도 여전히 다음 문자를 얻나요? –

+0

나머지 문자와 일치하므로 처음 숫자가 어디인지 "알 수 있습니다" – Reimeus

3

이것은 문자열에서 다른 것이 바뀔 수 있는지 여부에 따라 다릅니다. 항상 떨어져 수와 동일합니다 경우 숫자 "10"인덱스 (14)와 문자열의 15이기 때문에

, 당신은

int score = Integer.parseInt(strScore.substring(14,16)) 

를 사용할 수 있습니다.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

+0

득점이 7 일 경우 어떻게됩니까? –

+0

이후에 공백이 무시 될 것이므로 OK입니다. –

+1

글쎄, 나는 여전히 동의하지 않는다. 당신은 정수가 두 자리보다 작다는 것을 확신 할 수 없다. – anvarik

1

당신이 시도 할 수 있습니다 :

String strScore = "Your score is 10. Probability in the next 2 years is 40%"; 
String intIndex = strScore.valueOf(10); 
String intIndex = 10 // Result 
관련 문제