使用perl计算字符串中的大写字母

时间:2011-07-11 15:42:36

标签: string perl character uppercase

我想使用perl计算字符串中的大写字母数。

例如:我需要知道“EeAEzzKUwUHZws”这个词包含多少个大写字符。

4 个答案:

答案 0 :(得分:15)

小心Unicode,因为直接的A-Z对于其他字符(例如带重音的大写字母)并不是真正可移植的。如果你也需要处理这些,请尝试:

my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);

答案 1 :(得分:9)

使用tr运算符:

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

这是一个常见问题,tr运营商usually outperforms other techniques

答案 2 :(得分:2)

sub count {
  $t = shift;
  $x = 0;   
  for( split//,$t ) {
    $x++ if m/[A-Z]/;
  }
  return $x;
}

答案 3 :(得分:0)

单线方法是:

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

这是基于Stuart Watt's answer,但根据评论中的tip that ysth posted进行了修改,使其成为一个单行。