SYNTAX
string.gmatch( string, pattern )
DESC
split がないため gmatch で代用する。
gmatch はマッチしたすべての要素を順に返すイテレータ関数を返すため
for - in と併用して文字列を分割する。
local s = "d:/foo/bar/goo.txt";
local a = {}
for w in string.gmatch(s, "[^/]+") do
table.insert(a, w);
end
for i=1, #a, 1 do
print ( i .. " = " .. (a[i]) )
end
部分文字列
string.sub( string, s, e )
local ret = string.sub( "aaa___bbb", 1, 3 );
-- 7番目より後ろ
local ret = string.sub( "aaa___bbb", 7 );
print( ret );
match(検索)
SYNTAX
string.match( string, pattern [, index ] )
DESC
pattern にマッチする文字列を string から返す。
index が指定された場合は index の位置から検索をする。
-- RET hello
local ret = string.match("hello world", "%w+")
-- RET f
string.match( "foobar", "[a-z]" );
find(インデックス検索)
SYNTAX
string.find( string, regexp [, index ] )
RET
start, end : マッチした文字列の開始, 終了位置インデックス
nil : マッチしない場合
DESC
regexp にマッチする文字列を string から検索して
開始、終了の index を返す。
index が指定された場合は index の位置から検索をする。
-- 1, 4
s, e = string.find( "test", "%a*");
-- 4, 6
local s, e = string.find ( "aaa___bbb", "___" )
-- 拡張子を返す
path = "d:/foo/test.txt"
local idx = string.find( path, '%.' )
local ext = string.sub( path, 0, idx - 1 )
-- 1, 3
local path = "c:/foo.txt"
local s, e = string.find( path, "[Cc]:/" );