kitoko552.memo

kitoko552のメモ

Stringのlength(文字数)を取得するにはcharacters.countがベスト

要点

  • Stringの文字数を取得する方法はけっこうある。
  • characters.countが一番正確っぽい。
print(str.characters.count)
print(str.utf16.count)
print(str.lengthOfBytesUsingEncoding(NSUnicodeStringEncoding))

swift string lengthとググると...

いろいろ出てきます。
特にSwiftのstringに関しては、古いバージョンのものについて書かれたものが多いので注意です。
今僕が書いているこの文章も数年後には古いものとなります。

これはプログラミング全般に言えることですが、なるべく新しい情報を見た方がいいです。
情報を得るときは古いバージョンについて書かれたものでないかに注意しましょう。

話を戻して

「swift string length」とググると、いろいろ出てきます。
Swift2.1でも使えるものとして挙げられるのは以下の3つでしょうか。

print(str.characters.count)
print(str.utf16.count)
print(str.lengthOfBytesUsingEncoding(NSUnicodeStringEncoding))

characters.countがベスト

Playgroundで実際にやってみるのが一番わかりやすいと思いますが、結論から言うと、characters.countが一番予想通りの挙動をしてくれます。
英語や日本語、絵文字なんかも試してみてみると一番こいつがしっくりくると思います。

他の2つは、日本語の文字数すら当たっていなかったり、絵文字の文字数が絵文字によって変わったりと不思議な挙動をします。
場合によっては他の2つも使えるでしょうが、シンプルなStringの文字数をカウントしたかったらcharacters.countがオススメです。

おわり