【问题标题】:Count uppercase letters in string using perl使用perl计算字符串中的大写字母
【发布时间】:2011-10-02 22:11:09
【问题描述】:

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

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

【问题讨论】:

    标签: string perl character uppercase


    【解决方案1】:

    注意 Unicode,因为直接的 A-Z 不能真正移植到其他字符,例如重音大写字母。如果您也需要处理这些,请尝试:

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

    【讨论】:

    • 或者只是$result = () = $string =~ m/\p{Uppercase}/g
    • 请记住Uppercase(别名upper)不仅仅包含Uppercase_Letter(别名Lu),尽管前者比后者更适用。当然,当它们与大写不同时,两者都会忽略标题。
    【解决方案2】:

    使用tr 运算符:

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

    这是一个常见问题,tr 运算符 usually outperforms other techniques

    【讨论】:

    • 当然可以,但是如果您不在乎它是否得到正确答案,我可以无限快地编写任何代码。 ;(
    【解决方案3】:
    sub count {
      $t = shift;
      $x = 0;   
      for( split//,$t ) {
        $x++ if m/[A-Z]/;
      }
      return $x;
    }
    

    【讨论】:

      【解决方案4】:

      单线法是:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-10
        • 2020-01-04
        • 2020-08-28
        • 2014-10-03
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多