2016-06-03 5 views
3

나는 "Humidity: 14.00% Temperature:28.00 C"과 같은 문자열을 가지고 있습니다.자바에서 문자열에서 플로트 값 추출하기

문자열에서 두 개의 부동 소수점 값을 추출하려면 어떻게해야합니까?

+1

적절한이 작업을 수행하는 방법은 당신의 문자열의 문법을 공부하고 (예를 들어 * 파서 *를 구축하는 것입니다, '%가'*입니다 * 사용이 시도 할 수 있습니다 100 연산자로 나누기 및 C는 Celcius 온도 구성표를 나타냄). 또는 java.lang.String # substring과 Float # parseFloat를 사용하여 해킹 할 수 있습니다. 끔찍한 해결책으로 밝혀지기 시작하기 전에 조언을 구하는 것 중 하나. – Bathsheba

+0

번호를 라벨과 연결해야합니까, 아니면 숫자를 항상 같은 순서로 사용할 수 있습니까? 숫자에 항상 소수점이 포함됩니까? 그렇다면 소수점 앞과 뒤에 항상 숫자가 올 것인가? –

답변

3

(면책 조항 : 더 깨끗하고 재사용 가능한 코드를 원한다면 @Andrew Tobilko의 대답을보아야합니다.)

먼저 문자열을 두 개의 부분 문자열로 분리해야합니다. 당신은 당신이 Float.parseFloat (문자열들) 귀하의 문자열에서 float를 추출하는 데 사용하는, 그런 다음이 사용 String a = yourString.substring(10,14); String b =yourString.substring(29,33);

을 수행 할 수 있습니다

당신의 문자열이 당신이 쓴 것과 정확히 경우입니다
Float c=Float.parseFloat(a); Float d= Float.parseFloat(b); 

. 그렇지 않으면 String.substring (int beginIndex, int endIndex)을 호출 할 때 올바른 색인을 사용해야합니다.

5

먼저 @Bathsheba 님의 의견을보세요.
나는 똑똑한 방법이 있지만, 영리하거나 보편적이지 않습니다.

String[] array = string.replaceAll("[Humidity:|Temperature:|C]", "").split("%"); 

당신은 String[]{"14.00", "28.00"}를 받게됩니다 그리고 당신은 Float.parse() 또는 Float.valueOf() 방법을 사용하여 Float에 배열의이 값을 변환 할 수 있습니다.

Arrays.stream(array).map(Float::valueOf).toArray(Float[]::new); 
1

당신은 정규식

String regex="([0-9]+[.][0-9]+)"; 
String input= "Humidity: 14.00% Temperature:28.00 C"; 

Pattern pattern=Pattern.compile(regex); 
Matcher matcher=pattern.matcher(input); 

while(matcher.find()) 
{ 
    System.out.println(matcher.group()); 
}