2011-07-11 46 views

回答

14

当心统一的,作为直A-Z的事情是不是为其他字符,如重音大写字母真的很容易携带。如果您需要太多处理这些,尝试:

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

或者只是'$ result =()= $ string =〜m/\ p {大写字母}/g' – ysth

+0

不错的一个,我忘了那个诀窍! –

+2

请记住'Uppercase'(alias' upper')而不仅仅是'Uppercase_Letter'(别名'Lu'),尽管前者通常比后者更合适,当然这两种方法当与大写字母不同时忽略了标题。 – tchrist

9

使用tr操作:

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

这是一个常见的问题和tr操作usually outperforms other techniques

+1

很好,但如果你不在乎它是否得到正确的答案,我可以无限快地完成任何代码。 ;( – tchrist

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