我正在寻找最短,最简单,最优雅的方式来计算给定字符串中的大写字母数。
答案 0 :(得分:41)
function count_capitals($s) {
return strlen(preg_replace('![^A-Z]+!', '', $s));
}
答案 1 :(得分:3)
George Garchagudashvili解决方案很棒,但如果小写字母包含变音符号或重音符号,则会失败。
所以我做了一个小修改来改进他的版本,也适用于小写突出字母:
public static function countCapitalLetters($string){
$lowerCase = mb_strtolower($string);
return strlen($lowerCase) - similar_text($string, $lowerCase);
}
您可以在turbocommons库中找到此方法和许多其他字符串常用操作:
答案 2 :(得分:2)
我给出了另一种解决方案,也许并不优雅,但很有帮助:
$mixed_case = "HelLo wOrlD";
$lower_case = strtolower($mixed_case);
$similar = similar_text($mixed_case, $lower_case);
echo strlen($mixed_case) - $similar; // 4
答案 3 :(得分: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";
答案 4 :(得分:0)
UPDATE