文字数はおいくら?(ruby版)

Post on 28-May-2015

396 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

サロゲート文字とか合字とか異体字とかの文字数を取得してみました。

TRANSCRIPT

文字数はおいくら?(Ruby版)

@tsuda_ahr 2014/4/5 LTDD広島 #2

1.サロゲート文字の場合

puts "𩹉".length

※サロゲート文字とは、文字コードが

U+10000

以上の文字をいいます。(かなり嘘かも)

1.サロゲート文字の場合

こたえ

1.サロゲート文字の場合

サロゲート文字でも、

正しく文字数を答える模様。

2.合字の場合

puts "を゙".length

puts "が".length

puts "が".length

2.合字の場合

こたえ

2.合字の場合

合字の構成要素数が文字数として戻る。

3.異体字の場合

puts "辻".length

puts "辻󠄀".length

3.異体字の場合

こたえ

4.C#だとこんな感じ

Ruby C#

サロゲート 𩹉(U+29E49)

1 2

合字

を゙(U+3092 U+3099)

2 2

が(U+304B U+3099)

2 2

が(U+304C)

1 1

異体字辻

(U+8FBB)1 1

辻󠄀(U+8FBB U+E0100)

2 3

内部がUTF-16なので、サロゲート領域(U+10000以上)

の文字は 2 でカウントされる。

5.結論

Ruby 結構優秀!(割と素直)

(というか内部が多分UTF-8)

蛇足) 気にしてほしいこと

String.Length は処理系によって値が異なることがある。

内部はどういうデータで保持しているかを想像してほしい。

入力するユーザー(一般の人)は無慈悲だ。# システムの都合は察してくれない

おわり

ありがとうございました

top related