カウントとインデックス
CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 1/56。
基礎編では、文字数を取得するために str.count を使用しました。さらに深く理解するということは、Swift の String が単なるバイトのフラットな配列ではなく、Characters のシーケンスであることを理解することを意味します。
let greeting = "Hello"
print(greeting.count) // 5
print(greeting.first!) // "H"
print(greeting.last!) // "o"
print(greeting.isEmpty) // false文字列を整数でインデックス指定することはできません。特定の位置にある文字を取得するには、文字列の開始位置からのオフセットを指定して index を取得します:
let i = greeting.index(greeting.startIndex, offsetBy: 1)
print(greeting[i]) // "e"first、last、および isEmpty プロパティは、日常的に使用するツールです。特定の場所がどうしても必要な場合にのみ、インデックスを使用するようにしましょう。
チャレンジ
初心者1行の入力を読み込みます。以下の3行を出力してください:
- 入力された文字数
- 最初と最後の文字をスペースで区切ったもの(例:
Helloの場合はH o) - 最初と最後の文字が大文字小文字を区別せずに同じ文字である場合は
true、そうでない場合はfalse(例:Anna、RadaR)
入力には少なくとも1文字含まれていると仮定してください。
入力が RadaR の場合、出力は以下のようになります:
5
R R
trueチートシート
SwiftのStringは、文字(Characters)のシーケンスです。主なプロパティ:
let s = "Hello"
s.count // 5
s.first! // "H"
s.last! // "o"
s.isEmpty // false特定の位置にある文字にアクセスするには、インデックスのオフセットを使用します:
let i = s.index(s.startIndex, offsetBy: 1)
print(s[i]) // "e"大文字と小文字を区別しない文字の比較:
s.first!.lowercased() == s.last!.lowercased()自分で試してみよう
let line = readLine()!
// TODO: 文字数、最初/最後、および大文字小文字を区別しない同一文字チェックを表示する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。