perl 統計字串中特定字元出現的次數

來源:互聯網
上載者:User

perl 統計字串中特定字元出現的次數  
 最近寫程式遇到如題問題,從網上搜了一些相關技巧,如下:
            (利用數組和雜湊的方法就不再列出了)
法一:
    

 #!/usr/bin/perl -w use strict;  my $str = 'abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopahkl;fjh#dsjfklpafj '; my $count = $str =~ tr/#/#/; 

 統計了字串$str 中出現的#的個數,在這裡用到了轉換操作符tr///,簡單快速,當之首選。

附上s/// 和tr/// 的區別:
    s///: 替換運算子。s/searchpattern/repalcement/;預設搜尋$ _,找出searchpattern,並且用replacement來替換整個匹配的Regex。該運算子返回匹配的數量或進行替換的數量,如果沒有進行任何匹配,則返回0。
當然也可以指定某個變數,如$perl=~s/searchpattern/repalcement/; 另外,替換運算子也可以使用非斜杠(/)的界限符,如s###.
    tr/// :轉換操作符。tr///的作用與替換運算子有些類似,不過它並不使用Regex,而且它的運行方式完全不同。轉換操作符的句法如下所示:tr/searchment/repalcement/;是把searchment的第一個字元換成replacement的第一個字元,searchment的第二個字元換成replacement的第二個字元,類推 ~~~~~~~
      即:轉換操作符t r / / /用於搜尋一個字串,找出searchlist中的各個元素,並用replacementlist中的對應元素對它們進行替換。如果r e p l a c e m e n t l i s t是空的,或者與s e a r c h l i s t相同,那麼t r / / /將計算並返回匹配的字元。目標字串並不被修改。
 

法二: 

my $var = 'TCTCATGTGAAAAACTATATCAATAATATAAAAACA';my $count = ($var =~ s/A/A/g);print $count; #計算字串  $var  中出現的A字元,用到了正則匹配s///g 。

 
法三:

my $str = 'abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopahkl;fjh#dsjfklpafj ' ;my $cc = 0;my $tmp = 0;if( $tmp = () = ($str =~ /#/g ) ) { $cc += $tmp;}print "$cc\n";        計算字串 $str 中出現的 # 個數,利用了正則匹配。                 該法也可以如下編寫,更簡潔。 #!/usr/bin/perl#find.plmy $s;$s += ( () =  /A/g ) while <>;print "A : $s\n";  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.