Menu
Coddy logo textTech

カウントとインデックス

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"

firstlast、および isEmpty プロパティは、日常的に使用するツールです。特定の場所がどうしても必要な場合にのみ、インデックスを使用するようにしましょう。

challenge icon

チャレンジ

初心者

1行の入力を読み込みます。以下の3行を出力してください:

  1. 入力された文字数
  2. 最初と最後の文字をスペースで区切ったもの(例:Hello の場合は H o
  3. 最初と最後の文字が大文字小文字を区別せずに同じ文字である場合は true、そうでない場合は false(例:AnnaRadaR

入力には少なくとも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: 文字数、最初/最後、および大文字小文字を区別しない同一文字チェックを表示する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン