API > Textutils


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

このページでは Textutils API について解説する。

参考資料:
執筆時のバージョン:
  • ComputerCraft 1.5 for Minecraft 1.4.6 / 1.4.7




Textutils API

文字列操作に関するちょっとした便利API。

slowWrite

  • textutils.slowWrite( text[, rate] )
  • text(文字列)を一文字ずつ画面に表示する。表示速度はrate(数値)で指定する(省略時は20)
  • 戻り値:nil

カーソル位置から文字列を表示し始める。終了時のカーソル位置は最後の文字の次。
rateは一秒間に表示する文字数。

slowPrint

  • textutils.slowPrint( text[, rate] )
  • text(文字列)を一文字ずつ画面に表示し、最後に改行する。表示速度はrate(数値)で指定する(省略時は20)
  • 戻り値:nil

カーソル位置から文字列を表示し始める。終了時のカーソル位置は最後の文字の次の行の先頭。
rateは一秒間に表示する文字数。

formatTime

  • textutils.formatTime( time[, twentyFourHour] )
  • ゲーム内の時刻を表す実数値time(数値)を、時刻を表す文字列に変換する。
    twentyFourHour(ブーリアン)が省略またはfalseのときは12時間表記、trueのときは24時間表記
  • 戻り値:文字列型。ゲーム内の時刻を表す文字列

timeos.time関数で得られる数値。

例:
print( textutils.formatTime( os.time(), false ) )
ゲーム内時刻を12時間表記の文字列に変換し、表示する("5:30 AM"のように表示される)。

tabulate

  • textutils.tabulate( ... )
  • 引数はテーブル型またはColors APIの色定数(数値型)で、複数指定可能。
    引数に指定したテーブル型の要素をタブ区切りで表示する。引数に複数のテーブルがある場合、行・列の幅は自動で調整される。
    引数にColors APIの色定数を指定すると、それ以降に表示されるの文字の色を変更することができる(カラー表示が可能な環境のみ)
  • 戻り値:nil

引数に指定可能なテーブルは、要素が文字列型または数値型、nilのみで構成されているもの。それ以外の型(ブーリアン、テーブル、関数など)を要素に含む場合はエラーになる。
要素にnilが含まれる場合、そのテーブル内のnil以降の要素は表示されない。

カラー表示ができない環境で文字色を変更しようとするとエラーになる。
この関数中で変更した文字色は関数以降も継続する。

例:
textutils.tabulate( {1,2,3}, {"A","B","C"} )
2つのテーブルを成形して表示する。
画面には以下のように出力される。
1.0   2.0   3.0
A     B     C

pagedTabulate

  • textutils.pagedTabulate( table[, ...] )
  • textutils.tabulate()の表示内容が1画面分を超える長さのときに、1ページずつ表示するようにしたもの
  • 戻り値:nil

1ページ分表示すると画面下部に"Press any key to continue"と表示され、何かキーを押すと次のページが表示される。

pagedPrint

  • textutils.pagedPrint( text[, lines] )
  • text(文字列)の表示行数がlines(数値、省略時は0)行を超えるとき、それ以降は1行ずつ表示するようにする
  • 戻り値:数値型。表示された行数(改行された数)

まずtextlines行を超えるまで表示され、それ以降は画面下部に"Press any key to continue"と表示されて、何かキーを押すごとに1行ずつ表示される。

serialize

  • textutils.serialize( anything )
  • オブジェクトanything(テーブルまたは文字列、数値、ブーリアン、nil)を文字列に変換する
  • 戻り値:文字列型。オブジェクトを表す文字列

テーブルや数値、ブーリアン型を文字列型に変換することにより、それをRednetで送信したり、テキスト形式で保存したりできるようになる。文字列型に変換したオブジェクトは、textutils.unserialize()によって復元することができる。

変換できるのは、要素が「テーブルまたは文字列、数値、ブーリアン、nil」のみで構成されたテーブル、または文字列、数値、ブーリアン、nilである。それ以外の型(関数など)が含まれる場合はエラーになる。また、テーブルの要素に自己参照となるテーブルが存在する場合もエラーとなる。

例:
myThing = { name = "Test", n = 2 }
sThing = textutils.serialize( myThing )
rednet.send( receiverID, sThing )  -- 既にRednetがopenされていて、receiverIDには相手のIDが代入されているものとする。
myCopy = textutils.unserialize( sThing )
print( myCopy.name )
テーブルを文字列に変換した後Rednetで送信し、それを復元して要素の1つ(name)を表示する("Test"と表示される)。

unserialize

  • textutils.unserialize( text )
  • textutils.serialize()で文字列textに変換したオブジェクトを復元する
  • 戻り値:テーブル型、あるいは数値型、文字列型、ブーリアン型、nil。復元されたオブジェクト

urlEncode

  • textutils.urlEncode( text )
  • textをURLエンコードする
  • 戻り値:文字列型。URLエンコードされたtext

文字列中の記号をパーセントエンコーディングする(%+16進数の形)。ただし、改行は"%0D%0A"に、半角スペースは"+"に変換される。
URLに付加するデータ部分のエンコードに使えるが、URLそのものには使えない(":"や"/"もパーセントエンコーディングされてしまうため)。

例:
sUnsafe = "http://computercraft.info/wiki/index.php?title=Textutils_(API)"
sSafe = textutils.urlEncode( sUnsafe )
print( sSafe )
文字列をURLエンコードして表示する。画面には以下のように表示される。
http%3A%2F%2Fcomputercraft%2Einfo%2Fwiki%2Findex%2Ephp%3Ftitle%3DTextutils%5F%28API%29
この例はtextutils.urlEncode()の 間違った用法 である。なぜなら、上記のように変換された文字列(sSafe)はもはやURLとして使えないからである。
正しくは以下の例のように使う。

例:
sUnsafe = "Textutils_(API)"
sBaseURL = "http://computercraft.info/wiki/index.php?title="
sSafe = textutils.urlEncode( sUnsafe )
sURL = sBaseURL .. sSafe
print( sURL )
データの文字列をURLエンコードしてURLの文字列に付加し、それを表示する。画面には以下のように表示される。
http://computercraft.info/wiki/index.php?title=Textutils%5F%28API%29