我有以下类型的字符串列表:
27 公里 56.1公里 45公里 96.2公里 87 千
我想得到每一个的数值。正如您所看到的,其中一些是浮点值,有时会输入错误的后缀“km”。我正在寻找的输出如下:
27 56.1 45 96.2 87
我在网上找到了将字符串转换为数字的正则表达式,但他们不认为某些值可以是浮点数,我该如何编写函数或找到满足我要求的表达式?
不需要正则表达式,只需使用floatval
:
$float = floatval($string);
$var = floatval($float);
就是你要找的。
只有parseFloat()
他们。parseFloat()
将以数字开头的字符串转换为数字并以第一个非数字字符结尾。
parseFloat('96.2 km')
=96.2
尝试这个。为我工作
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];
}
对于这些字符串,您可以使用/^\d+(\.\d+)?/
浮点正则表达式:[-+]?[0-9]*\.?[0-9]+