Tôi muốn đếm số chữ cái viết hoa trong một chuỗi sử dụng perl.Đếm chữ hoa trong chuỗi bằng cách sử dụng perl
Ví dụ: Tôi cần biết có bao nhiêu ký tự chữ hoa trong từ "EeAEzzKUwUHZws" chứa.
Tôi muốn đếm số chữ cái viết hoa trong một chuỗi sử dụng perl.Đếm chữ hoa trong chuỗi bằng cách sử dụng perl
Ví dụ: Tôi cần biết có bao nhiêu ký tự chữ hoa trong từ "EeAEzzKUwUHZws" chứa.
Hãy coi chừng Unicode, vì điều A-Z thẳng không thực sự di động cho các ký tự khác, chẳng hạn như chữ in hoa có dấu. nếu bạn cần phải xử lý những quá, hãy thử:
my $result = 0;
$result++ while($string =~ m/\p{Uppercase}/g);
Sử dụng tr
điều hành:
$upper_case_letters = $string =~ tr/A-Z//;
Đây là một câu hỏi phổ biến và tr
hành usually outperforms other techniques.
Chắc chắn, nhưng nếu bạn không quan tâm liệu câu trả lời đó có đúng câu trả lời hay không, tôi có thể thực hiện một chút mã bất kỳ nhanh chóng. ; ( – tchrist
sub count {
$t = shift;
$x = 0;
for(split//,$t) {
$x++ if m/[A-Z]/;
}
return $x;
}
Phương pháp one-liner là:
$count =() = $string =~ m/\p{Uppercase}/g
này được dựa tắt Stuart Watt's answer nhưng điều chỉnh theo công tip that ysth posted trong các ý kiến để làm cho nó một có thể.
hoặc chỉ '$ result =() = $ string = ~ m/\ p {Chữ hoa}/g' – ysth
Đẹp nhất, tôi đã quên mẹo đó! –
Hãy nhớ rằng' Chữ hoa' (bí danh 'trên') bao gồm nhiều hơn chỉ đơn thuần là 'Uppercase_Letter' (bí danh' Lu'), mặc dù cái cũ thường là appropirate hơn cái thứ hai, cả hai, tất nhiên, bỏ qua titlecase khi chúng khác biệt với chữ hoa. – tchrist