0Pricing
Swift Academy · レッスン

文字のカウントと反復処理

絵文字やアクセントを含むテキストを正しく反復処理します。

「文字のカウントと反復処理」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

文字数を数える

StringのcountプロパティはCharacterの値の数を返します。これはユーザーが認識する文字数と同じです。

let word = "Swift"
print(word.count)

countは見た目の文字を反映する

Swiftは書記素クラスタを数えるため、アクセント付き文字や絵文字は1文字として数えられ、読者の見た目と一致します。

let cafe = "caf\u{e9}"
print(cafe.count)

絵文字の文字数を正しく数える

1つの絵文字は、内部では複数のバイトやスカラーにまたがっていても、1文字として数えられます。

let s = "Hi\u{1F600}"
print("Characters:", s.count)

複雑な絵文字も1文字として数えられる

家族や国旗のような複数のスカラーで構成された絵文字も、単純にバイト数やスカラー数を数える場合とは異なり、1つのCharacterとして数えられます。

let flag = "\u{1F1FA}\u{1F1F8}"
print("Characters:", flag.count)
print("Scalars:", flag.unicodeScalars.count)

for-inで反復処理する

文字列に対するfor-inループでは、各Characterを順番に取得できます。書記素クラスタも正しく1つずつ処理されます。

for ch in "a\u{1F600}b" {
    print(ch)
}

特定の文字を数える

反復処理とカウンターを組み合わせるか、filterを使うことで、特定の文字の出現回数を数えられます。

let text = "banana"
let aCount = text.filter { $0 == "a" }.count
print("a appears:", aCount)

空かどうかを確認する

countと0を比較するよりもisEmptyを使うことをおすすめします。こちらのほうが意図が明確で、より高速になる場合もあります。

let s = ""
print(s.isEmpty)
print("hello".isEmpty)

インデックスは整数ベースではない

文字ごとにサイズが異なるため、Swiftの文字列では整数の添字ではなくString.Indexを使います。

let word = "Swift"
let first = word[word.startIndex]
print(first)

インデックスを使って反復処理する

位置と文字の両方が必要な場合は、indicesを使って反復処理できます。

let word = "Hi"
for i in word.indices {
    print(word[i])
}

オフセットを取得しながら列挙する

enumerated()を使うと、各文字とともに増加する整数のオフセットを取得できます。

for (i, ch) in "abc".enumerated() {
    print(i, ch)
}

正しく数えることが重要な理由

書記素クラスタ単位で数えることで、国際的なテキストや絵文字に対して、長さの確認、切り詰め、検証が直感どおりに動作します。

let name = "Jose\u{301}"
print("Visible length:", name.count)

確認問題

Swiftが1つの絵文字をどのように数えるか思い出してください。

まとめ: 文字のカウントと反復処理

countは書記素クラスタの数を返すため、絵文字やアクセント付き文字が1文字として数えられること、for-inは文字を正しく反復処理すること、文字列では整数ではなくString.Indexを使うこと、そしてenumerated()でオフセットを取得できることを学びました。

let s = "ab\u{1F600}"
print("Count:", s.count)
for (i, ch) in s.enumerated() { print(i, ch) }

よくある質問

「文字のカウントと反復処理」レッスンは無料ですか?

はい。「文字のカウントと反復処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「文字のカウントと反復処理」で何を学びますか?

絵文字やアクセントを含むテキストを正しく反復処理します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「文字のカウントと反復処理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. 文字と書記素クラスタ
  2. Unicodeスカラーとコードポイント
  3. 文字のカウントと反復処理
  4. エンコーディングビュー:utf8、utf16、unicodeScalars
← Swift Academyに戻る