Takahiro Octopress Blog

-1から始める情弱プログラミング

Swiftで使いたいんだけど思うように使えないsubscript

はじめに

さて、今日はSwiftの String 型に関するメモです。
何かできそうなのに実は面倒だという話があったのでちょろっと忘れないように書いておきます。

文字列から文字を取り出したい!

プログラミングを書いているときに、たまに『文字列から文字を取り出したい!』ということがあるかと思います。
JavaScriptなら charAt を利用するだけで任意の場所の文字を取得することができますが、Swiftだと意外に面倒でした…

1
2
3
4
5
6
7
8
9
10
11
func sample1() {
  let chrSample1 = "こんにちは"
  // 先頭文字の取得
  print(chrSample1.characters[chrSample1.startIndex]) // こ
  // 先頭から1つ先の文字を取得
  let secondIndex = chrSample1.index(after: chrSample1.startIndex)  // ん
  print(chrSample1.characters[secondIndex])
  // 末尾の文字を取得
  let lastBeforeIndex = chrSample1.index(before: chrSample1.endIndex) // は
  print(chrSample1.characters[lastBeforeIndex])
}

上記のように場所を指定する必要があります。
下記のように数字で指定しようとすると全て静的解析でエラー判断されます。

1
2
3
4
5
6
func sample1() {
  let chrSample1 = "こんにちは"
  print(chrSample1.characters[0]) // エラー
  print(chrSample1[0])            // エラー
  print(chrSample1.subscript(0))  // エラー
}

まとめ

案外ハマる場面がある気がするので、試しておくと良かったりしますね。
今回は単なるメモ書きでした。

Comments