Previous: left 先頭切り出し Up: mcal Next: line 行番号 MCMD2
MCMD2 : mcal : length 文字列長

4.57 length 文字列長

書式1: length($str$)

書式2: lengthw($str$)

文字列の長さを計算する。 lengthw関数を用いると、$str$をワイド文字として扱う。 NULL値の長さは0であることに注意する。

利用例

例1: 基本例

$ 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

例2: マルチバイト文字を含む例

以下は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

例3: ワイド文字として扱う例

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
Previous: left 先頭切り出し Up: mcal Next: line 行番号 MCMD2