Re: [問題] 固定長度的中英文句字處理?

看板Perl作者時間15年前 (2010/06/29 10:23), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《tumc (HIHIHI)》之銘言: : 如果是一個句子裡面混雜了big5及英文字, : 如果要將句子控制在一個固定的長度,也就是多的部份要截掉 : ,但希望截的"乾淨",也就是不希望發生中文字被截一半,造成奇怪的字出現 : 請問該如何做呢? : ex: : 若是要固定輸出不能超過為5個中文字 : $s="這句有5個半" => "這句有5個" : $s="這句是六個整" => "這句是六個" : $s="最後是數字5" => "最後是數字" use Encode; sub cutString { my ( $str, $max_length, $enc ) = @_; $max_length = defined($max_length) ? $max_length : 48; $enc = defined($enc) ? $enc : 'big5'; $str = decode( $enc, $str ); $str = substr( $str, 0, $max_length ); encode( $enc, $str ); } my $s = "這句有5個半"; print cutString( $s, 5 ); => 如果 $s 是 big5 print cutString( $s, 5, 'utf-8' ); => 如果 $s 是 utf-8 這樣我的輸入、輸出都是 bytes,而字串的操作都是用 characters 為單位。 建議您可以先釐清 characters 與 bytes 的差異,參考以下這個投影片 http://www.slideshare.net/Penfold/perl-and-unicode -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.64.133 ※ 編輯: liyih 來自: 140.114.64.133 (06/29 10:25)

06/30 15:58, , 1F
這個做法好像中文字英文字都算是一個字...
06/30 15:58, 1F
文章代碼(AID): #1CALaY-2 (Perl)
文章代碼(AID): #1CALaY-2 (Perl)