Difference between revisions of "String exploding (日本語)"

(Created page with "この関数は Lua に文字列を弾き出す機能を追加します。 <source lang="lua"> function string.explode(str, div) assert(type(str) == "string" and type(div...")
 
m
 
Line 30: Line 30:
 
</source>
 
</source>
 
[[Category:Snippets (日本語)]]
 
[[Category:Snippets (日本語)]]
 +
{{#set:LOVE Version=any}}
 +
{{#set:Description=この関数は Lua に文字列を弾き出す機能を追加します (テーブルと併せて定義された仕切り部分文字列を返します)。}}

Latest revision as of 05:39, 15 November 2016

この関数は Lua に文字列を弾き出す機能を追加します。

function string.explode(str, div)
    assert(type(str) == "string" and type(div) == "string", "invalid arguments")
    local o = {}
    while true do
        local pos1,pos2 = str:find(div)
        if not pos1 then
            o[#o+1] = str
            break
        end
        o[#o+1],str = str:sub(1,pos1-1),str:sub(pos2+1)
    end
    return o
end

用例:

tbl = string.explode("foo bar", " ")
print(tbl[1]) --> foo
-- 文字列テーブルへ弾き出されたものを追加したので、これをこうすることができます:
str = "foo bar"
tbl2 = str:explode(" ")
print(tbl2[2]) --> bar
-- 元の文字列を復元するために、 Lua の table.concat を使用することができます:
original = table.concat(tbl, " ")
print(original) --> foo bar