我有以下类型的字符串列表:
27 km 56.1 km 45 KM 96.2km 87 k
我想获得每个数值。正如您所看到的,其中一些是浮点值,后缀“km”有时会输入错误。我正在寻找的输出如下:
27 56.1 45 96.2 87
我在网上找到了将字符串转换为数字的正则表达式,但他们不认为某些值可以是浮点数,如何编写函数或找到符合我要求的表达式?
答案 0 :(得分:4)
不需要正则表达式,只需使用floatval
:
$float = floatval($string);
答案 1 :(得分:3)
$var = floatval($float);
正是您要找的。 p>
答案 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];
}