Previous: factorial 階乗 Up: mcal Next: fldsize 項目数 MCMD2
MCMD2 : mcal : fixlen 固定長変換

4.40 fixlen 固定長変換

書式1: fixlen($str$,長さ,位置,padding文字)

書式2: fixlenw($str$,長さ,位置,padding文字)

$str$を固定の長さの文字列に変換する。 $str$が指定の長さに満たない場合は、 右詰もしくは左詰めで指定した文字を埋め込む。 左右の選択では、「位置」パラメータに"L"もしくは"R"を指定する。 埋め込む文字は「padding文字」パラメータに任意の文字を指定する。 また、$str$の長さが、指定した固定長の長さを超えた場合、 右詰の場合は先頭側が、左詰めの場合は末尾側の文字列が削られることに注意する。

マルチバイト文字を対象とした固定長変換についてはfixlenw関数を利用する。

利用例

例1: 基本例

str項目を5文字の固定長文字列に変換する。 5文字に満たない文字列は右詰("R")で"#"を埋める。

$ more dat1.csv
id,str
1,abc
2,123
3,
4,1234567
$ mcal c='fixlen($s{str},5,"R","#")' a=rsl i=dat1.csv o=rsl1.csv
#END# kgcal a=rsl c=fixlen($s{str},5,"R","#") i=dat1.csv o=rsl1.csv
$ more rsl1.csv
id,str,rsl
1,abc,##abc
2,123,##123
3,,#####
4,1234567,34567

例2: 左詰め例

左詰("L")で"#"を埋める。

$ mcal c='fixlen($s{str},5,"L","#")' a=rsl i=dat1.csv o=rsl2.csv
#END# kgcal a=rsl c=fixlen($s{str},5,"L","#") i=dat1.csv o=rsl2.csv
$ more rsl2.csv
id,str,rsl
1,abc,abc##
2,123,123##
3,,#####
4,1234567,12345

例3: マルチバイト文字を含む場合

$ more dat2.csv
id,str
1,こんにちは
2,大阪
$ mcal c='fixlenw($s{str},4,"R","埋")' a=rsl i=dat2.csv o=rsl3.csv
#END# kgcal a=rsl c=fixlenw($s{str},4,"R","埋") i=dat2.csv o=rsl3.csv
$ more rsl3.csv
id,str,rsl
1,こんにちは,んにちは
2,大阪,埋埋大阪
Previous: factorial 階乗 Up: mcal Next: fldsize 項目数 MCMD2