文字列の検索
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 2/78。
in 演算子は、文字列内にテキストが含まれているかどうかを教えてくれます。はい・いいえだけでは不十分な場合、文字列には検索メソッドがあります。
contains(text)は、inと同様に、テキストがどこかに含まれていればtrueを返しますbegins_with(text)とends_with(text)は、先頭または末尾だけを確認しますfind(text)は、テキストが最初に現れる位置のインデックスを返します。現れない場合は-1を返しますrfind(text)は、最後に現れる位置のインデックスを返しますcount(text)は、テキストが現れる回数を返します
var email := "alice@coddy.tech"
print(email.begins_with("alice"))
print(email.ends_with(".tech"))
print(email.find("@"))
print(email.find("x"))
print(email.count("c"))true
true
5
-1
3find()には省略可能な2番目の引数があります。これは検索を開始するインデックスです。すでに見つけた箇所の次にあるものを見つけるには、これを使います。
var text := "one fish, two fish"
var first := text.find("fish")
print(first)
print(text.find("fish", first + 1))4
14これらのメソッドでは大文字と小文字が区別されます。"Hello".contains("hello") は false です。まず文字列を to_lower() で変換するか、大文字と小文字を区別しないバージョンの findn()、containsn()、countn() を使ってください。
チャレンジ
簡単プログラムはメールアドレスをemailに読み込みます。次のすべてのルールを満たしているか確認します。
@がちょうど1つ含まれている@で始まっていない- スペースが含まれていない
- 大文字と小文字の組み合わせを問わず、
.com、.org、または.techで終わっている
すべてのルールを満たす場合はvalidを、そうでない場合はinvalidを出力します。入力がalice@CODDY.TECHの場合、出力は次のとおりです。
valid自分で試してみよう
extends Node
func _ready():
var email := OS.read_string_from_stdin()
# valid または invalid を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ