変換のためのstring.gsub
gsubでパターンを文字列、関数、テーブル検索の結果に置き換えます。
「変換のためのstring.gsub」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLua Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Lua Academyコースには全4レッスンが含まれています。
string.gsubとは
string.gsub(s, pattern, repl, n) は、s 内の pattern の出現箇所を repl で置換します。置換後の新しい文字列と、置換回数を返します。
単純な文字列置換
リテラルの部分文字列をすべて置換します。
local s = "hello world world"
local result, count = s:gsub("world", "Lua")
print(result, count) -- hello Lua Lua 2置換回数の制限
4番目の引数を渡すと、置換回数を制限できます。
local s = "aaa bbb aaa"
print(s:gsub("aaa", "xxx", 1)) -- xxx bbb aaa 1パターンに基づく置換
すべての数字を固定文字列に置換します。
local s = "abc 123 def 456"
print(s:gsub("%d+", "NUM")) -- abc NUM def NUM 2関数による置換
repl が関数の場合、各キャプチャ(または一致全体)を引数として呼び出され、その戻り値で一致箇所が置換されます。
local s = "price: 100, tax: 15"
local result = s:gsub("%d+", function(n)
return tostring(tonumber(n) * 1.1)
end)
print(result) -- price: 110.0, tax: 16.5テーブルによる置換
repl がテーブルの場合、各一致結果(またはキャプチャ)がキーとして使われ、テーブルの値で一致箇所が置換されます。
local vars = {name="Alice", lang="Lua"}
local tmpl = "Hello, {name}! Welcome to {lang}."
local result = tmpl:gsub("{(%w+)}", vars)
print(result) -- Hello, Alice! Welcome to Lua.空白のトリミング
gsubを使って、文字列の先頭と末尾にある空白を削除します。
local function trim(s)
return s:gsub("^%s+", ""):gsub("%s+$", "")
end
print("[" .. trim(" hello ") .. "]") -- [hello]大文字と小文字の変換
関数と組み合わせたgsubを使って、各文字を大文字または小文字に変換します。
local function toUpper(s)
return s:gsub("%a", string.upper)
end
print(toUpper("hello world")) -- HELLO WORLD特殊文字のエスケープ
文字列内のすべてのパターン特殊文字をエスケープし、リテラルパターンとして使えるようにします。
local function escapePat(s)
return s:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
end戻り値の回数の利用
2番目の戻り値(置換回数)は、置換が実際に行われたかどうかを検出するのに役立ちます。
local s = "no numbers here"
local result, n = s:gsub("%d+", "X")
if n == 0 then print("nothing replaced") endテンプレートエンジンのパターン
簡単なテンプレートエンジンでは、{{key}} プレースホルダーをデータテーブルの値で置換します。
local function render(tmpl, data)
return (tmpl:gsub("{{(%w+)}}", data))
end
print(render("Hi {{name}}!", {name="Bob"})) -- Hi Bob!gsubの問題
gsubの repl が関数の場合、関数には何が渡されますか。
まとめ:string.gsub
string.gsub は、文字列変換の万能ツールです。文字列、関数(動的な計算用)、テーブル(辞書検索用)を使って置換できます。また、置換回数も返します。
よくある質問
「変換のためのstring.gsub」レッスンは無料ですか?
はい。「変換のためのstring.gsub」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Lua Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Lua Academyコースには全4レッスンが含まれています。
「変換のためのstring.gsub」で何を学びますか?
gsubでパターンを文字列、関数、テーブル検索の結果に置き換えます。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Lua Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLua Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「変換のためのstring.gsub」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLua Academyレッスンでコードを書いて実行できますか?
はい。すべてのLua Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Luaパターン構文
- キャプチャとstring.match
- トークン化のためのstring.gmatch
- 変換のためのstring.gsub