String(文字列)


文字列型は "", '' で囲む
local s = "test" local s = 'test' -- 複数行にまたがるには [[ ]] でくくる local s = [[message test]]



連結


"aaa" .. "bbb"



長さ


# でバイト数を返す
-- 3 print ( #"aaa" ) -- 6( SJIS ) print ( #"あいう" ) -- 9( utf8 ) print ( #"あいう" ) -- 3 string.len( "abc" ) -- 9( utf8 ) string.len( "あいう" )



変換


"test" .. tostring( 1 ) -- 暗黙的に変換される "test" .. 1 -- Escape 文字使用可能 "foo\n" | 'bar\t' [[c:\foo\bar]] [[c:\foo \bar]]


分割(split)


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]:/" );
string.upper(); string.lower(); string string.format("string %s", s) %-12s : 左寄せ. %+12d : [+-] 記号. string.gsub( s, ptn, d[, n] ) s = string.gsub( "foo", "[a-z]", "c" ); string.len( s ); string.rep( s, n ); -- repeat



反転


-- "cba" string.reverse( "abc" )