書式1: length()
書式2: lengthw()
文字列の長さを計算する。 lengthw関数を用いると、をワイド文字として扱う。 NULL値の長さは0であることに注意する。
$ more dat1.csv id,str 1,abc 2,3.1415 3, 4,hello world! $ mcal c='length($s{str})' a=rsl i=dat1.csv o=rsl1.csv #END# kgcal a=rsl c=length($s{str}) i=dat1.csv o=rsl1.csv $ more rsl1.csv id,str,rsl 1,abc,3 2,3.1415,6 3,,0 4,hello world!,12
以下はutf-8でエンコーディングされた日本語を用いた例である。 utf-8の日本語は1文字3バイトでエンコーディングされているので、 length関数では日本語としての文字数ではなく、そのバイト数を返す。
$ more dat2.csv id,str 1,こんにちは 2,大阪 $ mcal c='length($s{str})' a=rsl i=dat2.csv o=rsl2.csv #END# kgcal a=rsl c=length($s{str}) i=dat2.csv o=rsl2.csv $ more rsl2.csv id,str,rsl 1,こんにちは,15 2,大阪,6
lengthwを使うと、内部で文字列をワイド文字に変換するので、マルチバイト文字1文字を正しく認識して計算する。
$ mcal c='lengthw($s{str})' a=rsl i=dat2.csv o=rsl3.csv #END# kgcal a=rsl c=lengthw($s{str}) i=dat2.csv o=rsl3.csv $ more rsl3.csv id,str,rsl 1,こんにちは,5 2,大阪,2