1

次のタイプの文字列のリストがあります。

27 km
56.1 km
45キロ
96.2km
87 k

そして、それぞれの数値を取得したいと思います。ご覧のとおり、それらのいくつかはfloat値であり、接尾辞「km」の入力が間違っている場合があります。私が探している出力は次のとおりです。

27
56.1
45
96.2
87

文字列を数値に変換する正規表現をWebで見つけましたが、一部の値が浮動小数点である可能性があるとは見なされていません。関数を記述したり、要件を満たす式を見つけたりするにはどうすればよいですか?

4

6 に答える 6

4

正規表現は必要ありません。使用するだけfloatvalです。

$float = floatval($string);
于 2012-04-19T16:30:13.750 に答える
3

$var = floatval($float);あなたが探しているものです。

于 2012-04-19T16:48:46.110 に答える
2

それらだけparseFloat()parseFloat()数字で始まり、数字以外の最初の文字で終わる文字列を数字に変換します。

parseFloat('96.2 km')=96.2

于 2012-04-19T16:30:04.520 に答える
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];
}
于 2012-04-19T16:32:50.617 に答える
0

これらの文字列には、次を使用できます/^\d+(\.\d+)?/

于 2012-04-19T16:29:20.460 に答える
0

浮動小数点正規表現:[-+]?[0-9] * \。?[0-9] +

于 2012-04-19T16:29:43.407 に答える