Lua標準ライブラリ/文字列ライブラリ

ページ名:Lua標準ライブラリ/文字列ライブラリ
翻訳が中途半端につきTranslate
この記事には翻訳されていない箇所があります。
どなたでも翻訳にご協力いただくことができます。
◆原文へのリンク : w:c:dev:Lua reference manual/Standard libraries
ご協力お願いします

Lua標準ライブラリ/文字列ライブラリ

順序
数学ライブラリテーブルライブラリ


目次

文字列ライブラリ[]

Luaの文字列のインデックス付けは、最初の文字が1の位置である (C、PHP、JavaScriptのように0ではない)。 文字列の末尾から逆方向にマイナス値で指定することもできる。 つまり、最後の文字は -1 の位置で示される。

『待った!』 この文字列ライブラリは1バイト専用と言ってもよく、2バイト以上の文字に対応していません。
2バイト以上の文字を含む場合は、ScribuntoのUstlingライブラリをご利用ください。

string.byte[]

string.byte(s[, i[, j]])

文字列sのi番目からj番目までの文字コードの値を返します。省略時iは1、jはiと同じになります。Identical to mw.ustring.byte().

string.char[]

string.char(...)

引数の数値と等しい文字コードの文字を連結した文字列を返します
See mw.ustring.char() for a similar function that uses Unicode codepoints rather than byte values.

string.find[]

string.find(s, p[, init[, plain]])

文字列s内でのパターンpの最初のマッチの開始位置と終了位置を返します。
マッチしなかった場合はnilを返します。init には検索開始位置を指定します。
plain が true の場合パターンマッチングは行われず、単純な部分文字列検索になります。
パターン内にキャプチャが指定されていた場合、その内容が3番目以降の戻り値として返されます。

See mw.ustring.find() for a similar function extended as described in Ustring patterns and where the init offset is in characters rather than bytes.

string.format[]

string.format(fmt, ...)

任意のフォーマットで記述します。書式文字列は標準C関数のprintfと同じ。

  • 認識されるフラグは '-'、'+'、''、'#'、および '0'。
  • 最大99までの整数フィールド幅がサポートされています。
  • 最大99までの整数精度がサポートされています。
    • どちらも'*'は未サポート。
  • 長さ指定子は全て未サポート。
  • 位置指定子("%2$s"みたいなの)も未サポート。
  • それ以外の 'c', 'd', 'i', 'o', 'u', 'x', 'X', 'e', 'E', 'f', 'g', 'G', 's', '%'と'q'はサポートされている。
    • 未サポート:*、l、L、n、p、h
    • 追加:q

q オプションは、Luaインタプリタで安全に読み戻せる適切な形式の文字列に書式化する。この時、文字列はダブルクォートの間に書かれ、文字列中のダブルクォート、改行、埋め込まれたゼロ、バックスラッシュは正しくエスケープされる。

c、d、E、e、f、g、G、i、o、u、X、x はすべて数値の引数を期待し、 q と s は文字列を期待する。

文字列と数値の間の変換はデータ型の指定に従って実行されます。他の型は自動的に文字列に変換されません。 NUL文字(バイト値0)を含む文字列は正しく処理されません。

Identical to mw.ustring.format().

string.gmatch[]

string.gmatch(s, p)

汎用 for 文で使用します。文字列s内の正規表現pにマッチする部分文字列を返すイテレータ関数を返します。patternにキャプチャが指定されていない場合は、各呼び出しで完全一致が生成されます。

この関数では、パターンの先頭にある '^'は、繰り返しを妨げるので魔法のようなものではありません。それはリテラル文字として扱われます。

See mw.ustring.gmatch() for a similar function for which the pattern is extended as described in Ustring patterns.

string.gsub[]

string.gsub(s, p, repl[, n])

文字列s内のパターンpにマッチする部分をreplで置換します。
replには文字列、テーブル、関数のいずれかを指定します。nには置換が行われる回数を指定します。

返値は実際に置換が行われた回数が入ります。

replが文字列の場合は、その文字列が置換に使われます。文字%はエスケープ文字として働きます。repl中の%n(ただしnは1から9)はd番目のキャプチャした部分文字列の値(以下参照)を表します。%0はマッチ全体を表し、%%は単一の%を表します。replがテーブルの場合は、各マッチごとに最初のキャプチャをキーとしてテーブルを引きます。パターンにキャプチャがなければ、マッチ全体をキーとして使います。replが関数の場合は、その関数はマッチが現れるたびに呼ばれ、すべてのキャプチャされた部分文字列が順番通りに引数として渡されます。パターンにキャプチャがなければ、マッチ全体が単一の引数として渡されます。テーブル検索または関数呼び出しの戻り値が文字列または数値であれば、それが置換文字列として使われます。そうでなく、falseまたはnilであれば、置換されません(つまり、元のマッチがそのまま文字列中に保たれます)。

See mw.ustring.gsub() for a similar function in which the pattern is extended as described in Ustring patterns.

string.len[]

string.len(s)string.len(str) 文字列の長さを取得します。#sでも代用できます

空文字列 "" の長さは0である。 文字列中のゼロも数えるので、"a\000b\000c" の長さは5である。

See mw.ustring.len() for a similar function using Unicode codepoints rather than bytes.

string.lower[]

string.lower(s)

文字列s中のアルファベットを小文字にした文字列を返します
アルファベットと同じ値の2バイト文字も変換されるので注意

See mw.ustring.lower() for a similar function in which all characters with uppercase to lowercase definitions in Unicode are converted.

string.match[]

string.match(s, p[, init])

文字列s内のパターンpにマッチする部分文字列を返します。見つからなければnilを返します。
パターン内にキャプチャがあればそれを返します。init(省略時は1)は検索開始位置を指定します。

See mw.ustring.match() for a similar function in which the pattern is extended as described in Ustring patterns and the init offset is in characters rather than bytes.

string.rep[]

string.rep(s, n)

文字列sをn回繰り返した文字列を返します。Identical to mw.ustring.rep().

string.reverse[]

string.reverse(s)

文字列sを逆にした文字列を返します
2バイト文字は正しく処理されません

string.sub[]

string.sub(s, i[, j])

文字列sのi番目からj番目の文字までの部分文字列を返します。j省略時は文字列の末尾になります。

特に、string.sub(s,1,j)はsの先頭からj文字を取り出し、string.sub(s, -i)はsの最後のi文字を取り出す。

See mw.ustring.sub() for a similar function in which the offsets are characters rather than bytes.

string.upper[]

string.upper(s)

文字列s中のアルファベットを大文字にした文字列を返します
アルファベットと同じ値の2バイト文字も変換されるので注意

See mw.ustring.upper() for a similar function in which all characters with uppercase to lowercase definitions in Unicode are converted.

Luaパターン[]

Luaパターンは正規表現のようでそうでない。特に、正規表現やPCREとの以下の違いに注意するように:

  • メタ文字にPerlなどの「\」ではなく、「%」を使う。
  • ドット(.)は改行コードもマッチ対象。
  • 文字クラスの小文字と大文字の関係は補集合となる。
  • 「複数の正規表現のいずれかにマッチ」する | は実装されていない。
  • 量指定子(*、+、?、および- )はグループを捕らえず、個々の文字または文字クラスにのみ適用できます。
  • -は0回以上の最短マッチ。(-は既存の正規表現でいうところの「*?」と思っておけばよいだろう。)
  • 一般化された有限数量詞はありません(例えば、PCREの {n、 m} 数量詞)。
  • 幅がゼロのアサーションは、^、$、および%f[set] "frontier"パターンのみです。 PCREの\bや(?=···)などのアサーションは存在しません。
  • パターン自体は '\''ddd'''のような文字エスケープを認識しません。ただし、パターンはstringsなので、これらの種類のエスケープは、pattern-stringを作成するために使用される文字列リテラルで使用できます。

パターンには途中にゼロ(ASCII NUL、"\0")を含むことができない。代わりに%zを使う。

Also see Ustring patterns for a similar pattern-matching scheme using Unicode characters.

文字クラス[]

文字クラス は文字の集合を表すために使われます。 文字クラスの記述では以下の組み合わせが使用できます。

x(xはメタ文字(^$()%.[]*+-?)以外)

文字xそれ自身を表す。

.(ドット)

すべての文字を表す。

%x(xは英数文字以外)

文字x自身を表す、文字のエスケープ。すべての句読点(メタでない文字も)は'%'を前置してパターン中でそれ自身を表すことができます。

集合補集合集合の内容
%a%Aすべてのletter
%c%Cすべての制御文字
%d%Dすべての数字
%l%Lすべての小文字
%p%Pすべての区切り記号
%s%Sすべての空白文字
%u%Uすべての大文字
%w%Wすべての英数文字
%x%Xすべての十六進数字
%z%ZNULや0として表現される0バイト文字
[set][^set]set内のすべての文字の和。最初の文字と最後の文字をマイナス(-)でつなぐことで文字の範囲を指定することもできます。set中の部品として上で説明した%xクラスもすべて使うことができますset中のそれ以外の文字はすべてそれ自身を表します。 例えば[%w_](または[_%w]) はすべての英数文字にアンダースコアを加えたものを表し、[0-7]は8進数字を表し、[0-7%l%-]は8進数字に小文字と'-'を加えたものを表します。

範囲を指定するときには、最初と最後の文字は同じ種類の文字(数字、英大文字、英小文字)でないといけません。
キャレット(^)を文字集合に含みたいときにはそれは先頭にあってはいけません。
閉じ角カッコ(])を集合に含む場合は、必ず最初の開き角カッコの直後におく必要があります。

パターンの要素[]

パターンの要素 は以下のいずれかである。

  • 単一の文字クラス
  • 単一の文字クラスに'*'が続いたもの。そのクラスの文字の0以上の繰り返しにマッチする。可能な限り長いシーケンスにマッチする。
  • 単一の文字クラスに'+'が続いたもの。そのクラスの文字の1以上の繰り返しにマッチする。可能な限り長いシーケンスにマッチする。
  • 単一の文字クラスに'-'が続いたもの。そのクラスの文字の0以上の繰り返しにマッチする。'*'と異なり、可能な限り短いシーケンスにマッチする。
  • 単一の文字クラスに'?'が続いたもの。そのクラスの文字の0回または1回の出現にマッチする。
  • %n(nは1から9)。これは、n番目にキャプチャされた文字列にマッチするような要素である (下の説明を参照)。
  • %bxy(xとyは異なる文字)。これはxで始まってyで終わる文字列にマッチするような要素である。xとyは対応が取れる。つまり、文字列を左から右に読んでいって、xが現れるたびにカウントを +1 し、yでは -1 したとき、最後のyはカウントが0になる最初のyである。例えば、要素%b()はカッコの対応が取れた式にマッチする。
  • %f[set](境界パターン)。この項目は、次の文字がsetに属し前の文字がsetに属さない場所で、空文字列にマッチします。集合setは上で述べたように解釈されます。対象の先頭および末尾では、文字 '\0' が存在するかのように扱われます。
    ※このパターンはLua5.1ではリファレンスに載っていなかったが、Lu5.2で追加された。ソース解析でこれを見つけた人に感謝。
^Pattern$[]

patternはパターン要素の列である。

パターンの最初に現れる'^'は対象文字列の先頭にマッチを固定する。パターンの最後に現れる'$'は対象文字列の最後にマッチを固定する。他の位置では、'^'や'$'は特別な意味を持たず、それ自身を表す。

キャプチャ[]

パターンは、カッコで囲まれたサブパターンを含むことができ、これをキャプチャと呼びます。パターンが合致したときには、キャプチャに相当する部分文字列は保存され、後で使用することができるようになります。キャプチャの順序は開きカッコの出現順です。たとえば、パターン"(a*(.)%w(%s*)),"において、最初のキャプチャはa*(.)%w(%s*)に相当する部分文字列であり、2番目のキャプチャは.に、3番目のキャプチャは%s*に相当する部分文字列となります。

Luaパターンの特殊なケースとして、空っぽのキャプチャ()は、その場所の文字列の中での位置をキャプチャします。たとえば、パターン"()aa()"を文字列"flaaap"に適用した場合、3と5がキャプチャされます。この空っぽのキャプチャは正規表現では使えません。



特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

電球ボトル

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

電球

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

闇の中心

闇の中心EnglishCenter of Darkness 属性 DemonUnknown目次1 属性解説2 闇の中心の関係者2.1 幽閉されたナイトメア種2.2 幽閉された荒らし3 関連項目属性解説...

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

野生の毒沼

野生の毒沼EnglishVenomous wild swamp 属性 VenomFeral地理情報地名の由来属性からの連想属性解説[]Venom - A deadly essence that can...

部分フィルタ

部分フィルタ上フィルタオブジェクト部分フィルタとは、部分フィルタに追加されたフィルタ効果を画面の一部分のみに反映させるフィルタオブジェクトの1つである。※フィルタによっては正しく動作しません。目次1 ...

輪郭系エフェクト

輪郭系エフェクト上フィルタオブジェクトこの記事では、「オブジェクトの輪郭」を変更する系のフィルタオブジェクトについて説明する。目次1 凸エッジ1.1 ◇幅1.2 ◇高さ1.3 ◇角度2 エッジ抽出2....

設定ダイアログ/トラックバー

設定ダイアログ/トラックバー上設定ダイアログ目次1 移動の種類2 基本の移動方法2.1 直線移動2.2 曲線移動2.3 加減速移動2.4 瞬間移動2.5 中間点無視2.6 移動量指定2.7 ランダム移...

設定ダイアログ

設定ダイアログ上拡張編集オブジェクトの追加やオブジェクト自体をダブルクリックすることで設定ダイアログが表示されます。表示中にダブルクリックで閉じることも出来ます。目次1 操作方法2 右クリックメニュー...

色関係エフェクト

色関係エフェクト上フィルタオブジェクトこの記事では、色関係のフィルタオブジェクトについて説明する。目次1 色調補正1.1 ◇明るさ1.2 ◇コントラスト1.3 ◇色相1.4 ◇輝度1.5 ◇彩度1.6...

自演コメント風スクリプト

Aviutl 自演コメント風スクリプト anm 種類使用種別アニメーション効果動作種別文字列絵画外部情報作者gometh公開日2017/12/2自演コメントとは、gometh氏によるanm拡張子のAv...

直方体展開

Aviutl 直方体展開 anm 種類使用種別アニメーション効果動作種別3D絵画外部情報作者ティム公開日2011/5/27直方体展開とは、ティム氏によるanm拡張子のAviutlスクリプトの1つである...

盗聴器

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

液状荒野

液状荒野EnglishLiquid wilderness 属性 SiltPlague地理情報地名の由来属性からの連想属性解説[]Silt - Weaker version of Stone in so...

歪み系エフェクト

歪み系エフェクト上フィルタオブジェクトこの記事では、歪み関係のフィルタオブジェクトについて説明する。目次1 ミラー1.1 ◇透明度1.2 ◇減衰1.3 ◇境目調整1.4 ◇ミラーの方向1.5 ◇中心の...

極座標変換+ぼかしミラー

Aviutl 極座標変換+ぼかしミラー anm 種類使用種別アニメーション効果動作種別基本機能の拡張、2D絵画、3D絵画外部情報作者ティム公開日2012/3/4極座標変換+ぼかしミラーとは、ティム氏に...

本、辞書

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...