string.find()
CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 37/54。
文字クラスを理解したので、string.find()と組み合わせて、完全一致のテキストではなくパターンを検索できるようになりました。これにより、テキストの検証や分析に役立つ強力な可能性が広がります。
string.find()関数は、リテラル文字列の場合と同じようにパターンを扱います。パターンが最初に一致する位置を返します。
local text = "User123"
local position = string.find(text, "%d")
print(position) -- 出力: 5これは文字列内の最初の数字を検索します。最初の数字は位置 5 にあります。大文字の文字クラスを使用して反対のものを検索することもできます。
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- 出力: 1ここでは、%D は数字以外の任意の文字に一致するため、位置 1 にある最初の文字を見つけます。
一般的な検証タスクの一つは、文字列が特定のパターンで始まっているかを確認することです。パターンの先頭にアンカー ^ を使用すると、文字列の開始位置でのみ一致させることができます。
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endこのパターンは文字列が文字で始まるかどうかを確認するため、特定の形式が必要な入力検証に役立ちます。
チャレンジ
簡単Write 関数 startsWithLetter を作成します。この関数は text を受け取り、string が letter で始まるかどうかを返します。
アンカー ^ と %a 文字クラスを使用して string.find() で、string が letter で始まるかどうかを確認します。
パラメーター:
text(string): 検証する string
戻り値: string が letter で始まる場合は true、それ以外の場合は false (boolean)
自分で試してみよう
function startsWithLetter(text)
-- ここにコードを書いてください
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックと制御フローのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ