6

perlを使用して文字列内の大文字の数を数えたい。

例:「EeAEzzKUwUHZws」という単語に含まれる大文字の数を知る必要があります。

4

4 に答える 4

15

Unicodeに注意してください。ストレートのAZは、アクセント付きの大文字など、他の文字には実際には移植できません。これらも処理する必要がある場合は、次を試してください。

my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);
于 2011-07-11T15:52:30.923 に答える
9

演算子を使用しtrます:

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

これはよくある質問であり、trオペレーターは通常、他の手法よりも優れています。

于 2011-07-11T15:46:58.807 に答える
2
sub count {
  $t = shift;
  $x = 0;   
  for( split//,$t ) {
    $x++ if m/[A-Z]/;
  }
  return $x;
}
于 2011-07-11T15:49:53.817 に答える
0

ワンライナー方式は次のとおりです。

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

これはStuartWattの回答に基づいていますが、ysthがコメントに投稿したヒントに従ってワンライナーに変更されています。

于 2014-01-07T22:34:53.090 に答える