Estoy buscando la manera más corta, simple y elegante de contar el número de letras mayúsculas en una cadena dada.forma más simple y más corta de contar letras mayúsculas en una cadena con php?
Respuesta
function count_capitals($s) {
return strlen(preg_replace('![^A-Z]+!', '', $s));
}
cletus no puede escribir el código. ¿De dónde vino? –
No funcionará con caracteres especiales utf-8 de una variedad de idiomas. –
No es el más corto, pero podría decirse que es el más simple ya que no es necesario ejecutar una expresión regular. Normalmente, diría que esto debería ser más rápido ya que la lógica y las verificaciones son simples, pero PHP siempre me sorprende con cuán rápidas y lentas son algunas cosas en comparación con otras.
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";
¡Al igual que en C! – alex
La función * count \ _capitals * es mucho más rápida. Con cadenas muy cortas * count \ _capitals * es solo un poco más rápido, pero con el primer párrafo de "Lorem ipsum ..." es de 0.03 segundos para ejecutar 3000 iteraciones contra 1.8 segundos para ejecutar la misma cadena a través de la función * capital \ _letters * 3000 veces –
que le daría otra solución, tal vez no es elegante, pero muy útil:
$mixed_case = "HelLo wOrlD";
$lower_case = strtolower($mixed_case);
$similar = similar_text($mixed_case, $lower_case);
echo strlen($mixed_case) - $similar; // 4
Parece que esta solución funcionaría incluso con letras mayúsculas con signos diacríticos. +1 – LittleTiger
George Solución Garchagudashvili es increíble, pero falla si las letras minúsculas contienen signos diacríticos o acentos.
así que hice un pequeño arreglo para mejorar su versión, que funciona también con el caso acentuado letras minúsculas:
public static function countCapitalLetters($string){
$lowerCase = mb_strtolower($string);
return strlen($lowerCase) - similar_text($string, $lowerCase);
}
- 1. Contar letras mayúsculas en cadena usando perl
- 2. PHP más corta/cadena más larga en la gama
- 3. ¿La forma más simple de incrementar una fecha en PHP?
- 4. ¿Forma simple de contar las vocales en una cadena en PHP?
- 5. dividir una cadena de letras mayúsculas
- 6. ¿Cuál es la forma más corta de contar la cantidad de elementos en un generador/iterador?
- 7. ¿Forma más eficiente de contar intersecciones?
- 8. recorte uuid más para hacer cadena corta
- 9. Antlr: ¿La forma más simple de reconocer fechas y números?
- 10. La forma más rápida de contar el número de caracteres en mayúsculas en C#
- 11. forma más corta de obtener el primer carácter de cada palabra en una cadena
- 12. ¿Calcula la forma más corta de rotar, derecha o izquierda?
- 13. ¿Debe comprobar null & length o hay una forma más corta de verificar una cadena no vacía?
- 14. ¿La forma más corta de verificar si una variable contiene un entero positivo usando PHP?
- 15. ¿Forma más rápida de dividir una cadena y contar caracteres usando R?
- 16. más corta Rubí Quine
- 17. ASP.NET: ¿La forma más corta de convertir DataTable en una cadena (HTML)?
- 18. Compresión de cadena corta realmente simple
- 19. Forma más corta de imprimir el año actual en Javascript
- 20. ¿Cómo contar el número de letras en una cadena aleatoria?
- 21. Elección ponderada corta y simple
- 22. Forma más corta de intercambiar dos archivos en bash
- 23. ¿La forma más rápida de compilar una aplicación Symbian simple?
- 24. Insertar o dividir cadena en letras mayúsculas objetivo-c
- 25. ¿Cuál es la mejor forma de generar una cadena de hash corta a partir de una cadena más larga?
- 26. Cómo separar letras y dígitos de una cadena en php
- 27. Forma más corta de abrir archivos con codificación y readLine() en Java?
- 28. cadena más corta dentro de la misma ruta (rama)
- 29. forma más corta de escribir jQuery $ (document) La función ready
- 30. ¿Hay alguna versión más corta/más simple del ciclo for para algo x veces?
Si desea hacer trampa: strlen (strtoupper ($ str));) –
más simple y más elegante! = code golf –
str_replace (rango ('A', 'Z'), '', $ str, $ num_caps); echo $ num_caps; – GZipp