Swiftの文字列操作!長さ・空判定・前方一致・後方一致を初心者向けに徹底解説
生徒
「Swiftで文字列の長さを調べたり、空っぽかどうかを確認する方法ってありますか?」
先生
「もちろんありますよ。Swiftでは文字列を扱うための便利なプロパティやメソッドが用意されています。長さを調べたり、空判定をしたり、前方一致や後方一致も簡単にできます。」
生徒
「それなら安心ですね!具体的にどんな風に書くんですか?」
先生
「それでは、一つずつ順番に解説していきましょう。」
1. Swiftで文字列の長さを調べる方法
プログラミングでは「文字列の長さ」を数えることがとても大切です。例えば、入力フォームに「パスワードは8文字以上」といったルールを作るときに必要になります。Swiftでは、文字列の長さを調べるときにcountというプロパティを使います。
let text = "Hello"
print(text.count)
上のコードを実行すると、文字数「5」が表示されます。これは、「H」「e」「l」「l」「o」の5文字だからです。
5
「count」という英単語は「数える」という意味なので、直感的に理解しやすいですね。
2. Swiftで文字列が空かどうかを判定する
次に「文字列が空っぽかどうか」を調べる方法です。これを「空判定」と呼びます。空判定は、ユーザーが入力フォームに何も入力しなかった場合にチェックするなど、日常的によく使われます。
Swiftでは、isEmptyというプロパティを使って判定します。
let emptyText = ""
print(emptyText.isEmpty)
結果は「true」と表示されます。これは「空っぽだよ」という意味です。
true
逆に、文字が入っていれば「false」となります。つまり「空ではない」ということですね。
3. Swiftで文字列が特定の文字で始まっているか確認(前方一致)
「前方一致」とは、文字列が特定の文字や単語で始まっているかどうかを調べる方法です。例えば、「https://」で始まっていればURLだと判断する、といった使い方です。
Swiftでは、hasPrefixというメソッドを使います。
let url = "https://example.com"
print(url.hasPrefix("https"))
実行結果は「true」となります。これは「https」で始まっているからです。
true
もし「http」や「ftp」で始まっていないかチェックしたい場合にも同じ方法を使えます。
4. Swiftで文字列が特定の文字で終わっているか確認(後方一致)
次に「後方一致」です。これは文字列が特定の文字で終わっているかを確認する方法です。例えば、ファイル名が「.jpg」で終わっていれば画像ファイルだと判断するような場面で使えます。
Swiftでは、hasSuffixというメソッドを使います。
let fileName = "picture.jpg"
print(fileName.hasSuffix(".jpg"))
結果は「true」と表示されます。これはファイル名の最後が「.jpg」で終わっているからです。
true
もし「.png」や「.gif」など他の拡張子を確認したい場合にも同じように使えます。
5. 実生活に例えて理解しよう
ここまで学んだ内容を実生活に置き換えると、よりイメージが湧きやすくなります。例えば「文字列の長さ」は、手紙の文字数を数えることと同じです。「空判定」は、封筒を開けて中身が入っているかどうかを確かめることに似ています。「前方一致」は、郵便番号の最初の数字を確認して地域を判断するようなものです。そして「後方一致」は、手紙の最後に「○○より」と書いてあるかを確認するイメージです。
こうした考え方を持つと、プログラミングがぐっと身近になります。
6. まとめて実践コード
最後に、今回紹介した「文字列の長さ」「空判定」「前方一致」「後方一致」をまとめて使ったサンプルコードを紹介します。
let message = "Swift Programming"
// 文字列の長さ
print("文字数: \(message.count)")
// 空判定
print("空文字かどうか: \(message.isEmpty)")
// 前方一致
print("Swiftで始まっている?: \(message.hasPrefix("Swift"))")
// 後方一致
print("ingで終わっている?: \(message.hasSuffix("ing"))")
このコードを実行すると、文字列操作の基本的なチェックをまとめて確認できます。
文字数: 17
空文字かどうか: false
Swiftで始まっている?: true
ingで終わっている?: true