【发布时间】:2011-10-02 22:11:09
【问题描述】:
我想用 perl 计算字符串中大写字母的个数。
例如:我需要知道单词“EeAEzzKUwUHZws”包含多少个大写字符。
【问题讨论】:
标签: string perl character uppercase
我想用 perl 计算字符串中大写字母的个数。
例如:我需要知道单词“EeAEzzKUwUHZws”包含多少个大写字符。
【问题讨论】:
标签: string perl character uppercase
注意 Unicode,因为直接的 A-Z 不能真正移植到其他字符,例如重音大写字母。如果您也需要处理这些,请尝试:
my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);
【讨论】:
$result = () = $string =~ m/\p{Uppercase}/g
Uppercase(别名upper)不仅仅包含Uppercase_Letter(别名Lu),尽管前者比后者更适用。当然,当它们与大写不同时,两者都会忽略标题。
使用tr 运算符:
$upper_case_letters = $string =~ tr/A-Z//;
这是一个常见问题,tr 运算符 usually outperforms other techniques。
【讨论】:
sub count {
$t = shift;
$x = 0;
for( split//,$t ) {
$x++ if m/[A-Z]/;
}
return $x;
}
【讨论】:
单线法是:
$count = () = $string =~ m/\p{Uppercase}/g
这是基于Stuart Watt's answer,但根据 cmets 中的tip that ysth posted 进行了修改,使其成为单线。
【讨论】: