0Pricing
Lua Academy · レッスン

変換のための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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Luaパターン構文
  2. キャプチャとstring.match
  3. トークン化のためのstring.gmatch
  4. 変換のためのstring.gsub
← Lua Academyに戻る