length = 文字列や配列の長さを調べる - AWK
○(文字数)Gawk on Windows ○(文字数)Gawk △(バイト数。配列不可)mawk32 △(バイト数。配列不可)Mawk ○(バイト数)awk
文字列や配列の長さを調べます。o 数値を指定すると、文字列に変換した後の長さを調べます。
o 配列サポートは、Gawk系とOriginal(= the one true awk)特有の機能です。
**** 書式
--------
length( [調べたい文字列] )
--------
o 調べたい文字列 -- 省略した時は、変数 $0 の長さを調べます。
+ 次の処理系では、配列を指定する事も出来ます。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
+ original = the one true awk(updated May 1, 2007)
o 戻り値 -- 文字列もしくは配列の長さ
o 文字を数える時の単位は、処理系によって異なります。
+ (漢字などの全角文字が混じっている場合、長さが変わります。)
+ Gawk系は、文字数で数えます。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
+ その他は、バイト数で数えます。
+ mawk MBCS (32bit版) 1.3.3
+ Mawk for Windows 1.3.3
+ original = the one true awk(updated May 1, 2007)
**** 使用例
--------
BEGIN {
print length("ミクさん。"); # 5 (or 10)
print length("MikuSan"); # 7
print length(39.39); # 5
print length(); # 0。この時には、$0 は空です。
}
{
print length(); # $0の長さ。入力した行が「39san」の時、5
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 指定した文字列の長さを返します。長さの単位は処理系によって異なります。
o 処理系によっては、配列の長さ(= 要素数)を調べる事も出来ます。
o 指定を省略した時は、変数 $0 の長さを返します。
o 文字列の代わりに数値を指定すると、数値を文字列に変換してから使用します。
+ 長い整数を指定すると、最後の方の桁が0になったり、浮動小数点形式になります。
+ 実数を指定すると、6桁までに丸めたり、浮動小数点形式になります。
+ この動作は変える事も出来ます。詳しくは、「数値から文字列にする時に、実数を7桁以上表示させる方法」
** 処理系に依存する動作
o 文字を数える時の単位は、処理系によって異なります。
+ 文字数で数える処理系
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
+ バイト数で数える処理系
+ mawk MBCS (32bit版) 1.3.3
+ Mawk for Windows 1.3.3
+ original = the one true awk(updated May 1, 2007)
**** メモ
o Gawk on Windows 3.1.7は、バイト数で数えさせる事も出来ます。オプション「 -Wctype=ASCII」を追加します。
o Gawk系で、UTF-8のテキストファイルを読み込む場合、1行目に限り、$0と $1について、表示されている文字数よりも多く数える事があります。
+ Gawk on Windows 3.1.7 = 1文字多く数えます。
+ Gawk for Windows 3.1.6 = 2文字多く数えます。
+ 原因は、UTF-8で保存したファイルの先頭にあった、UNICODE特有の見えない文字(= BOM = EF BB BF)。
+ Windows XPのメモ帳で保存する時に UTF-8を指定すると、BOMが付くみたいです。
+ 対策方法は「UTF-8のファイルから、BOMを除去する方法」
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- バイト数で数える。配列は非対応
o Mawk for Windows 1.3.3 -- バイト数で数える。配列は非対応
o original = the one true awk(updated May 1, 2007) -- バイト数で数える
==
関連ページ:
▼AWKの文字列操作関数と関連機能(▼ABC順)
▼AWKの配列操作関数と関連機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> index = 文字列の登場位置を調べる
match = 正規表現の登場位置を調べる
> delete = 配列の要素を削除する
asort = 配列の要素を並び替える(Gawk専用)
(2010年10月4日変更。Gawk on WindowsのACSIIオプションは、-Wとctypeの間を詰める)
(2010年8月24日追加。配列を指定した時の動作)
(2010年6月20日追加。Gawk on Windowsには、バイト数を数えさせる方法がある)
(2010年6月10日追加。数値を指定した時の動作)