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 

这是基于Stuart Watt 的回答,但根据ysth在评论中发布的提示进行了修改,使其成为单线。

于 2014-01-07T22:34:53.090 回答