【Swift】文字列の文字数、バイト数を調べる。(Swift 2.1、XCode 7.2)
文字列の文字数を調べる
String型変数の文字数を調べるには、以下のメソッドを用いる。
1 2 3 4 5 6 7 8 9 |
// 【メソッド】count // 【説明】文字数を取得する。Stringのcharacters要素に対してこのメソッドを呼び出す。 var test1 = "かきくけこ" print(test1.characters.count) //実行結果 //5 |
日本語、英語、記号、スペース、半角、全角、どんな文字でも1文字は1文字としてカウントされる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* ** 【補足】どんな文字でも1文字は1文字としてカウントする。 */ var test2 = "abcde" print(test2.characters.count) //実行結果 //5 var test3 = "abcde_ あいう えお" print(test3.characters.count) //実行結果 //13 |
文字列のバイト数を調べる
文字列のバイト数を調べるには以下のメソッドを用いる。引数には使用するエンコード方式を指定する。以下はShift-JISを指定したサンプルコード。全角文字は1文字2バイトになることがわかる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* ** 【メソッド】lengthOfBytesUsingEncoding ** 【説明】String型変数のバイト数を調べる。 */ var test1 = "abcde" print(test1.lengthOfBytesUsingEncoding(NSShiftJISStringEncoding)) //実行結果 //5 var test2 = "あいうえお" print(test2.lengthOfBytesUsingEncoding(NSShiftJISStringEncoding)) //実行結果 //10 |
エンコード方式にはあらかじめ定数が用意されていて、日本人が使いそうな主要な定数は以下になる。
定数 | 説明 | |
---|---|---|
1 | NSISO2022JPStringEncoding | JIS |
2 | NSShiftJISStringEncoding | Shift-JIS |
3 | NSJapaneseEUCStringEncoding | EUC-JP |
4 | NSUTF8StringEncoding | UTF8 |
5 | NSUnicodeStringEncoding | Unicode |
UTF-8を指定した場合、全角文字は1文字3バイト以上になる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* ** 【補足】指定するエンコード方式によって結果が異なる例 */ var test3 = "abcde" print("EUC:" + String(test3.lengthOfBytesUsingEncoding(NSJapaneseEUCStringEncoding))) print("UTF-8:" + String(test3.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))) //実行結果 //EUC:5 //UTF-8:5 var test4 = "あいうえお" print("EUC:" + String(test4.lengthOfBytesUsingEncoding(NSJapaneseEUCStringEncoding))) print("UTF-8:" + String(test4.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))) //実行結果 //EUC:10 //UTF-8:15 |