2012-04-19 1 views
1

에서 값 플로트하기 나는 다음과 같은 유형의 문자열 목록했습니다 :문자열

 
27 km 
56.1 km 
45 KM 
96.2km 
87 k 

을 그리고 각 하나에 대한 숫자 값을 싶어. 보시다시피 이들 중 일부는 부동 소수점 값이고 접미사 "km"는 때때로 잘못 입력 된 것입니다. 문자열을 숫자로 변환 웹

 
27 
56.1 
45 
96.2 
87 

내가 찾은 정규 표현식하지만 그들은 내가 방법을 쓸 수 있습니다, 일부 값은 부동 소수점 수 있다는 것을 생각하지 않는다 : 내가 찾고 출력은 다음과 같다 함수 또는 내 요구 사항을 충족하는 표현식을 찾으십니까?

+0

'floatval()'을 사용해 보셨나요? – Blake

+0

사실, 내가 무엇을 필요로했는지, 대답으로 답변을 게시해야합니다 –

+0

당신은 이미 대답을 선택했습니다. 당신이 내 회사로 전환 할 계획이 아니라면 큰 문제가 아닙니다. 하하. – Blake

답변

3

$var = floatval($float); 작동하는 것은 당신이 찾고있는 것입니다.

0

이러한 문자열의 경우, /^\d+(\.\d+)?/

0

부동 소수점 정규식을 사용할 수 있습니다 :?.? [- +] [0-9] * \ [0-9] +

2

그냥 parseFloat() 그들. parseFloat()은 숫자로 시작하는 문자열을 숫자로 변환하고 첫 번째 숫자가 아닌 문자로 중단합니다.

parseFloat('96.2 km') = 96.2

+1

이것은 자바 스크립트입니다. – jeremyharris

+0

당신 말이 맞아요. 'floatval()'은 PHP에 상응하는 것입니다. Javascript를 하루 종일 다루었습니다! –

+0

나는 꽤 자주 같은 일을한다. :) – jeremyharris

4

정규식에 대한 필요가 없습니다, 단지 floatval를 사용

$float = floatval($string); 
0

을이 시도. 나를

try {  
    Regex regexObj = new Regex(@"\b\d+(?:\.\d{0,}|)");  
    Match matchResults = regexObj.Match(subjectString);  
    while (matchResults.Success) {  
     // matched text: matchResults.Value  
     // match start: matchResults.Index  
     // match length: matchResults.Length  
     matchResults = matchResults.NextMatch();  
    }  
} catch (ArgumentException ex) {  
    // Syntax error in the regular expression  
} 

PHP는 방법

preg_match_all('/\b\d+(?:\.\d{0,}|)/', $subject, $result, PREG_PATTERN_ORDER); 
for ($i = 0; $i < count($result[0]); $i++) { 
    # Matched text = $result[0][$i]; 
}