From: TAKAHASHI Masayoshi Date: 2000-11-11T11:56:38+09:00 Subject: [ruby-dev:11473] Re: class Character (was: Ruby I18N) 高橋です。 Yasushi Shoji さん: > > > 逆に一つ質問なのですが、文字列から文字を取り出すときに code pointだけを > > > 欲い状況ってどういう時でしょうか?もし過去との互換性以外であったら教えて > > > ください。 > > > > 「code pointだけを欲しい」というより、「code point以外を取り出す > > のが厄介」という状況があるのではないかと。たとえばUnicodeなどの > > 合成文字の場合(複数code pointsで1文字になる)などです。 > > 「code point以外を取り出すのが厄介」と言うのがいまいち理解できないのです > が… (__; 今の Rubyのままでは code pointしか取り出せないのではないでしょ > うか? すみません、基本的な話で、文字列をcode point単位以外で切り出す のが厄介、という話です。要するにあるcode pointについて、それが1文字 なのか、それとも合成されるべきものなのかを判断するのが面倒だと。 Unicodeなら合成文字かどうかを判断するアルゴリズムがないので、 毎回テーブルを参照して合成文字かどうかを判断する必要がある わけですよね? それはちょっとなあ、と。 # 言葉遣いとしてcode pointじゃなくてcode unitの方が適切なのかしらん。 > 複数の code pointで一つの文字を表わしている場合は、単純に複数の code > pointを返すというのはどうですか? その方針ではおそらくそうなると思いますが、上記のようにそれを行う のにコストがかかる、と。どこで(時間と空間の)コストを負担するかは、 データの持たせ方によると思いますけど。 > 田中さんが書いていたけど、code pointとか byte列だとかを隠せる文字がある > と便利だと思うんですが…。 というわけで、結局は効率の問題なんでしょうね。 高橋征義 (TAKAHASHI Masayoshi) E-mail: maki@open-news.com