Luaの文字列
このページのスクリプトについて
このページにあるスクリプトは
テキストオブジェクトの <? と ?> で囲んだ範囲に記述して動作を確認できます。
一般的な文字列
シングルクォーテーション、またはダブルクォーテーションで囲んだ範囲は文字列になります。
mes('AviUtl') mes("拡張編集")
文字列中にシングルクォーテーション、ダブルクォーテーションを含めるには
エスケープ文字を使います。
mes('\'AviUtl\'と\'拡張編集\'') mes("\"AviUtl\"と\"拡張編集\"")
シングルクォーテーションで囲んだ文字列の中では
エスケープ文字を使わずにダブルクォーテーションを使えます。
逆も可能です。
mes('"AviUtl"と"拡張編集"') mes("'AviUtl'と'拡張編集'")
関数に渡す引数が文字列リテラル 1 つだけなら
関数呼び出しの丸括弧を省略できます。
mes "AviUtl"
長い文字列
二重の角括弧で囲んだ範囲は長い文字列になります。
長い文字列は改行やエスケープ文字をそのまま含むことができます。
開き二重角括弧の直後の改行は無視されます。
mes [[ 'AviUtl' "拡張編集"]]
間に複数のイコール記号を挟んだ二重角括弧に囲まれた範囲も長い文字列になります。
開き括弧と同数のイコール記号を挟んだ閉じ括弧だけが文字列の終端として扱われます。
mes [==[ [[AviUtl]] [=[拡張編集]=]]==]
文字列関数
文字列型の値はメタテーブルに文字列関数を持っています。
コロンを使って暗黙的に第1引数に自分自身を渡して関数を呼び出せます。
s1 = "AviUtl" s2 = s1:upper() mes(s1.." -> "..s2)
文字列リテラルを丸括弧で囲めば
変数に代入することなく文字列関数を呼び出せます。
mes(("AviUtl"):upper())
ほとんどの文字列関数は戻り値として文字列を返すため、
以下のように関数呼び出しをつなげることができます。
mes(("AviUtl"):rep(3):upper():reverse())
その他
Lua の文字列は途中にヌル文字を含む事ができますが、
拡張編集ではヌル文字が文字列終端を意味するため、
それ以降の文字列が表示されなくなります。
str = "AviUtl\0拡張編集" mes("文字列の長さ:"..#str.."\n") mes(str)
エスケープ文字一覧
\a | ベル |
\b | バックスペース |
\f | 改ページ |
\n | 改行 |
\r | 復帰 |
\t | 水平タブ |
\v | 垂直タブ |
\' | シングルクォーテーション |
\" | ダブルクォーテーション |
\\ | バックスラッシュ(円記号) |
\ddd | ddd は最大 3 桁の 10 進数。 そのコード値を持つ文字を直接表現できます。 |
- 最終更新:2013-01-29 07:41:12