Подсчет заглавных букв в строке с использованием perl - PullRequest
6 голосов
/ 11 июля 2011

Я хочу посчитать количество букв в верхнем регистре в строке, используя perl.

Например: мне нужно знать, сколько символов в верхнем регистре содержит слово "EeAEzzKUwUHZws".

Ответы [ 4 ]

15 голосов
/ 11 июля 2011

Остерегайтесь Unicode, поскольку прямая A-Z не очень переносима для других символов, таких как заглавные буквы с акцентом. если вам нужно с этим справиться, попробуйте:

my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);
9 голосов
/ 11 июля 2011

Используйте оператор tr:

$upper_case_letters = $string =~ tr/A-Z//;

Это распространенный вопрос, и оператор tr обычно превосходит другие методы .

2 голосов
/ 11 июля 2011
sub count {
  $t = shift;
  $x = 0;   
  for( split//,$t ) {
    $x++ if m/[A-Z]/;
  }
  return $x;
}
0 голосов
/ 08 января 2014

Однострочный метод:

$count = () = $string =~ m/\p{Uppercase}/g 

Это основано на ответе Стюарта Ватта , но изменено в соответствии с подсказкой , которую выложили в комментариях, чтобы сделать его однострочным.

...