2018年3月7日水曜日

文字列の長さを調べる

結論

先に言うと、文字列.count で得られる。

詳細

文字列の長さ(文字数)を調べるのに、Swiftでは多くのプログラミング言語にあるlengthなどのプロパティがない。
これはUnicodeの導入で1文字あたりのバイト数のバリエーションが増えたため、一つのlengthで対応できないためのようだ。

そこで以下のようなそれぞれに対応したcountプロパティで得ることになる。
unicodeScalarsはUTF32用だ。

"猫".utf8.count ->3
"🐱".utf8.count ->4

"猫".utf16.count ->1
"🐱".utf16.count -> 2

"猫".unicodeScalars.count ->1
"🐱".unicodeScalars.count ->1

"猫".characters.count ->1

"🐱".characters.count ->1

最後のcharactersが「見た目に何文字か」を返してくれて一番良かったのだが、Swift 4でdeprecatedになり、結局
"猫".count ->1
"🐱".count ->1
で落ち着いたようだ。
これなら楽でいいや。

0 件のコメント:

コメントを投稿