看板 Perl 關於我們 聯絡資訊
※ 引述《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)
tumc:這個做法好像中文字英文字都算是一個字... 06/30 15:58