Objective-CなどiOS関連の技術メモ。知識はここに投げ捨てて忘れる。

[NSCharacterSet whitespaceCharacterSet] にはどの文字が含まれるのか

最終更新日 2013年12月26日 21:43

NSCharacterSetクラスには、空白関連の文字セットを取得するクラスメソッドが3つある。まずざっと並べてみよう。

whitespaceCharacterSet

Returns a character set containing only the in-line whitespace characters space (U+0020) and tab (U+0009).

インラインの空白文字とspace(U+0020)とtab(U+0009)のみを含んだ文字セットを返す。

NSCharacterSet Class Reference

newlineCharacterSet

Returns a character set containing the newline characters.

改行文字を含んだ文字セットを返す。

NSCharacterSet Class Reference

whitespaceAndNewlineCharacterSet

Returns a character set containing Unicode General Category Z*, U000A ~ U000D, and U0085.

Unicode一般カテゴリZ*と、U000A〜U000D、U0085を含んだ文字セットを返す。

NSCharacterSet Class Reference

とりあえずUnicodeカテゴリについて

Unicodeのカテゴリは、文字の大まかな分類を定義したもの。各カテゴリにはアルファベット2文字からなるコードが割り当てられていて、whitespaceAndNewlineCharacterSetメソッドの説明にある「一般カテゴリZ*」というのは、コードの先頭のひと文字がZであるカテゴリのことを指している。ここにカテゴリの一覧が載っている。表の下から3つがZで始まるコードをもつ、空白っぽい文字を集めたカテゴリである。その他、空白文字関連では、表の一番上にあるカテゴリ Other,Control に改行コードやタブ文字が含まれる。

whitespaceCharacterSet

まずはwhitespaceCharacterSetから見ていこう。次のようなプログラムを実行してみた。

結果は次のとおり。一般カテゴリZsに加えて、例外的にU+0009のタブ文字が含まれている模様。Appleのドキュメントには「インラインの空白文字とspace(U+0020)とtab(U+0009)のみを含んだ文字セットを返す」と書いてあるが、この「インライン」というのはZsカテゴリを指しているつもりなのかもしれない。

newlineCharacterSet

続いてnewlineCharacterSet。プログラムはwhitespaceCharacterSetメソッド呼出をnewlineCharacterSetに変えただけなので省略。実行すると、whitespaceCharacterSetとちょうど正反対の結果になった。わかりやすい。

whitespaceAndNewlineCharacterSet

newlineCharacterSetとwhitespaceCharacterSetの実行結果が正反対であったことから大体想像がつく、whitespaceAndNewlineCharacterSetの場合の結果は次のとおり。「Unicode一般カテゴリZ*と、U000A〜U000D、U0085を含んだ文字セットを返す」というAppleドキュメントの説明ではU+0009のタブ文字が抜け落ちているらしい。

詳解 Objective-C 2.0 第3版

必読。こんなゴミサイトより、こっちを読むべき。

Amazonでみる

iPhoneプログラミングUIKit詳解リファレンス

必読。こんなゴミサイトより、こっちを読むべき。

Amazonでみる