从String获取浮点值

时间:2012-04-19 16:26:36

标签: php regex string

我有以下类型的字符串列表:

27 km
56.1 km
45 KM
96.2km
87 k

我想获得每个数值。正如您所看到的,其中一些是浮点值,后缀“km”有时会输入错误。我正在寻找的输出如下:

27
56.1
45
96.2
87

我在网上找到了将字符串转换为数字的正则表达式,但他们不认为某些值可以是浮点数,如何编写函数或找到符合我要求的表达式?

6 个答案:

答案 0 :(得分:4)

不需要正则表达式,只需使用floatval

$float = floatval($string);

答案 1 :(得分:3)

$var = floatval($float);正是您要找的。

答案 2 :(得分:2)

只需parseFloat()他们。 parseFloat()将以数字开头的字符串转换为数字,并使用第一个非数字字符停止。

parseFloat('96.2 km') = 96.2

答案 3 :(得分:0)

对于这些字符串,您可以使用/^\d+(\.\d+)?/

答案 4 :(得分:0)

浮点正则表达式: ??[ - +] [0-9] * \ [0-9] +

答案 5 :(得分: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];
}