Quiero contar el número de letras mayúsculas en una cadena usando perl.Contar letras mayúsculas en cadena usando perl
Por ejemplo: Necesito saber cuántos caracteres en mayúscula contiene la palabra "EeAEzzKUwUHZws".
Quiero contar el número de letras mayúsculas en una cadena usando perl.Contar letras mayúsculas en cadena usando perl
Por ejemplo: Necesito saber cuántos caracteres en mayúscula contiene la palabra "EeAEzzKUwUHZws".
Cuidado con Unicode, y de la recta Lo A-Z no es realmente portátil para otros caracteres, como letras mayúsculas acentuadas. si usted necesita para manejar estos también, tratar:
my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);
Use el operador tr
:
$upper_case_letters = $string =~ tr/A-Z//;
Esta es una pregunta común y el operador tr
usually outperforms other techniques.
Bueno, claro, pero si no te importa si obtiene la respuesta correcta o no, puedo hacer que cualquier código sea infinitamente rápido. ; ( – tchrist
sub count {
$t = shift;
$x = 0;
for(split//,$t) {
$x++ if m/[A-Z]/;
}
return $x;
}
El método de una sola línea es:
$count =() = $string =~ m/\p{Uppercase}/g
Esto se basa apagado Stuart Watt's answer pero modificado de acuerdo con el tip that ysth posted en los comentarios para que sea un uno -transatlántico.
o simplemente '$ result =() = $ string = ~ m/\ p {En mayúscula}/g' – ysth
Bueno, olvidé ese truco! –
Recuerda que' Mayúscula' (alias 'superior') comprende más que simplemente 'Letra de mayúscula' (alias 'Lu '), aunque la primera es más apropiada que la segunda. Ambas, por supuesto, ignoran el título cuando son distintas de mayúsculas. – tchrist