我正在寻找最短,最简单,最优雅的方法来计算给定字符串中大写字母的数量。最简单,最简单的方法来计算字符串中的大写字母与PHP?
回答
function count_capitals($s) {
return strlen(preg_replace('![^A-Z]+!', '', $s));
}
cletus不能写代码。它从哪里来的? – 2014-12-22 14:29:34
不适用于各种语言的特殊utf-8字符。 – 2017-11-04 20:30:48
这不是最短的,但它可以说是最简单的,因为正则表达式不必执行。通常我会说这应该会更快,因为逻辑和检查很简单,但是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";
就像在C! – alex 2010-11-02 02:04:38
函数* count \ _capitals *到目前为止速度更快。使用非常短的字符串* count \ _capitals *只是更快一些,但是第一段“Lorem ipsum ...”运行3000次迭代需要0.03秒,而通过函数* capital \ _letters运行相同字符串需要1.8秒。 3000次。 – 2010-11-02 02:03:35
我给另一种解决方案,也许不是优雅,但有所帮助:
$mixed_case = "HelLo wOrlD";
$lower_case = strtolower($mixed_case);
$similar = similar_text($mixed_case, $lower_case);
echo strlen($mixed_case) - $similar; // 4
似乎这种解决方案即使对大写字母和变音符号也能工作。 +1 – LittleTiger 2016-10-24 04:33:13
乔治Garchagudashvili解决方案是惊人的,但如果小写字母包含变音符号或重音失败。
所以我做了一个小的修复,以提高自己的版本,与小写字母加剧也适用:
public static function countCapitalLetters($string){
$lowerCase = mb_strtolower($string);
return strlen($lowerCase) - similar_text($string, $lowerCase);
}
- 1. 按字母排序字符串列表的最简单方法
- 2. 什么是计算字符串中字符频率最简单的方法?
- 3. 最简单的方法来搜索字符串中的Teradata
- 4. 简单的方法来计算PHP中的字符串中的元音?
- 5. 最简单的假日计算方法?
- 6. 最简单的方法来替换子字符串
- 7. 最简单的方法来检查字符串是否为URL
- 8. 最简单的方法来匹配字符串模式
- 9. 最简单的方法来将字符串分割成键/值
- 10. 最简单的方法来更改字体和字体大小
- 11. 最简单的方法来总计列?
- 12. PHP:从字符串中删除各种字符 - 最简单的方法?
- 13. 简单的方法来搜索字符串的字符串
- 14. Java:获取字符串中最后一个单词的最简单方法
- 15. 获取字符串中数值列表的最简单方法
- 16. 在Vim中交换两个字符串的最简单方法?
- 17. 解析C中字符串的最简单方法是什么?
- 18. 在PHP中引用多字节字符串的最简单方法是什么?
- 19. 最简单的方法来计数数字
- 20. 将宽字符串或宽字符数组转换为简单字符数组的最简单方法?
- 21. 为多个字符串做“git grep”最简单的方法吗?
- 22. 从RS-232端口读取字符串的最简单方法?
- 23. 枚举utf-8字符串最简单的方法
- 24. 索引C++字符串的最简单方法是什么?
- 25. VBScript:格式化字符串的最简单方法是什么?
- 26. 最简单的方法在Javascript以下字符串
- 27. 解析JSON字符串的最简单方法
- 28. 计算auto_increment接近其最大值的简单方法?
- 29. 最简单的方法来排序在Javascript中的字符串列表?
- 30. 最简单的方法来推算列意味着大数据
如果你想欺骗:strlen的(strtoupper($ STR));) – 2009-10-13 02:47:37
最简单并且最优雅!= code高尔夫 – 2009-10-13 02:52:37
str_replace(范围('A','Z'),'',$ str,$ num_caps); echo $ num_caps; – GZipp 2009-10-13 05:00:19