使用php计算字符串中大写字母的最简单,最短的方法?

pab*_*blo 14 php count letters

我正在寻找最短,最简单和最优雅的方法来计算给定字符串中的大写字母数.

cle*_*tus 42

function count_capitals($s) {
  return strlen(preg_replace('![^A-Z]+!', '', $s));
}
Run Code Online (Sandbox Code Playgroud)

  • cletus不能写代码.它从哪里来的? (3认同)

小智 8

$str = "AbCdE";

preg_match_all("/[A-Z]/", $str); // 3
Run Code Online (Sandbox Code Playgroud)


Jau*_*bad 6

George Garchagudashvili 解决方案很棒,但如果小写字母包含变音符号或重音符号,它就会失败。

所以我做了一个小的修复来改进他的版本,这也适用于小写强调字母:

public static function countCapitalLetters($string){

    $lowerCase = mb_strtolower($string);

    return strlen($lowerCase) - similar_text($string, $lowerCase);
}
Run Code Online (Sandbox Code Playgroud)

您可以在 turbocommons 库中找到此方法和许多其他字符串常见操作:

https://github.com/edertone/TurboCommons/blob/70a9de1737d8c10e0f6db04f5eab0f9c4cbd454f/TurboCommons-Php/src/main/php/utils/StringUtils.php#L373

编辑 2019

turbocommons 中计算大写字母的方法已经演变成一种可以计算任何字符串上大写和小写字符的方法。你可以在这里查看:

https://github.com/edertone/TurboCommons/blob/1e230446593b13a272b1d6a2903741598bb11bf2/TurboCommons-Php/src/main/php/utils/StringUtils.php#L391

在此处阅读更多信息:

https://turbocommons.org/en/blog/2019-10-15/count-capital-letters-in-string-javascript-typescript-php

它也可以在这里在线测试:

https://turbocommons.org/en/app/stringutils/count-capital-letters