[23] 全角文字対応length(S-JIS専用) 
2001/7/13 (Fri) 11:11:29 - あけび
sub z_length {
    local($s,$o) = @_;
    local($l) = length($s);
    $s =~ s/[\x81-\x9f\xe0-\xfc].//g;
    local($zl) = ($l-length($s))/2;
    $o ? $zl : $l-$zl;
}

全角文字(2バイト文字)を1文字と数えた文字数を返します。
#example.
&z_length("全角文字対応length")

第2引数を立てた場合には、文字列中の全角文字数を返します。
#example.
&z_length("全角文字対応length",1)


[24] Re:全角文字対応length(S-JIS専用) 
2001/7/13 (Fri) 13:57:49 - あけび
eucの場合

sub z_length {
    local($s,$o) = @_;
    local($l,$zl) = (length($s),($s =~ tr/\xa1-\xfe//)/2);
    $o ? $zl : $l-$zl;
}


[26] Re:全角文字対応length(S-JIS専用) 
2001/11/21 (Wed) 16:57:58 - あけび
おまけ。
S-JIS文字列中の全角/半角文字数をリストで返します。

printf "全角文字数:%d 半角文字数:%d\n", &zh_count("ああああaaaaaa");

sub zh_count {
    local($s) = @_;
    local($l) = length($s);
    $s =~ s/[\x81-\x9f\xe0-\xfc].//g;
    (($l-length($s))/2,length($s));
}

[▼次のスレッド]
INCM/CMT
Cyclamen v3.84.01