我想使用perl计算字符串中的大写字母数。
例如:我需要知道“EeAEzzKUwUHZws”这个词包含多少个大写字符。
答案 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进行了修改,使其成为一个单行。