21

特定の文字列の大文字の数を数える、最短で最もシンプルでエレガントな方法を探しています。

4

5 に答える 5

49
function count_capitals($s) {
  return mb_strlen(preg_replace('![^A-Z]+!', '', $s));
}
于 2009-10-13T02:48:34.487 に答える
3

エレガントではないかもしれませんが、役立つ別のソリューションを提供します。

$mixed_case = "HelLo wOrlD";
$lower_case = strtolower($mixed_case);

$similar = similar_text($mixed_case, $lower_case);

echo strlen($mixed_case) - $similar; // 4
于 2014-09-10T20:10:32.270 に答える
0

最短ではありませんが、正規表現を実行する必要がないため、間違いなく最も単純です。通常、ロジックとチェックが単純なため、これは高速であると言えますが、PHP を使用すると、あるものと他のものを比べたときの速さと遅さにいつも驚かされます。

function capital_letters($s) {
    $u = 0;
    $d = 0;
    $n = strlen($s);

    for ($x=0; $x<$n; $x++) {
        $d = ord($s[$x]);
        if ($d > 64 && $d < 91) {
            $u++;
        }
    }

    return $u;
}

echo 'caps: ' .  capital_letters('HelLo2') . "\n";
于 2009-10-13T03:17:51.133 に答える