分割と結合
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 4/78。
すでにsplit()で文字列を分割し、join()で配列を結合しました。どちらも、さらに多くのことができます。
split()の各要素は文字列で、区切り文字の間にあるとおりに、空白も含まれます。使う前に、各要素を整形するか変換してください。結果の要素はインデックスを使って置き換えられます:
var items := "sword, shield ,bow".split(",")
print(items)
for i in range(items.size()):
items[i] = items[i].strip_edges()
print(items)["sword", " shield ", "bow"]
["sword", "shield", "bow"]split() の第2引数は以前出てきたものです。true は空の要素を保持し、false はそれらを取り除きます。第3引数は分割回数を制限します。split(" ", true, 1) は最初の空白でのみ分割し、コマンドと行の残りの部分を区切ります。
print("say hello there".split(" ", true, 1))["say", "hello there"]rsplit()も同じように動作しますが、右から切り分ける位置を数えるため、ファイル名の最後のドットで分割できます:
print("save.backup.json".rsplit(".", true, 1))["save.backup", "json"]join()は数値の配列も受け取り、それぞれをテキストに変換します。", ".join([3, 1, 2])は"3, 1, 2"です。
チャレンジ
簡単プログラムは、カンマで区切られた単語の1行をlineに読み込みます。単語の周りにはスペースが入る場合があります。たとえば、red, green ,blueのようになります。
次の3行を出力してください。
- 単語の数
- 単語の前後のスペースを取り除き、大文字にして、
>(スペース、大なり記号、スペース)でつないだもの - スペースを含まない最長の単語。同じ長さの単語が複数ある場合は、最初の単語を出力してください
入力がred, green ,blueの場合、出力は次のようになります。
3
RED > GREEN > BLUE
green自分で試してみよう
extends Node
func _ready():
var line := OS.read_string_from_stdin()
# 個数、結合した単語、最も長い単語を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ