SlideShare a Scribd company logo
1 of 13
Download to read offline
文字数はおいくら?
(Ruby版)
@tsuda_ahr 2014/4/5 LTDD広島 #2
1.サロゲート文字の場合
puts "𩹉".length
※サロゲート文字とは、文字コードが
U+10000
以上の文字をいいます。(かなり嘘かも)
1.サロゲート文字の場合
こたえ
1
1.サロゲート文字の場合
サロゲート文字でも、
正しく文字数を答える模様。
2.合字の場合
puts "を゙".length
puts "が".length
puts "が".length
2.合字の場合
こたえ
2
2
1
2.合字の場合
合字の構成要素数が文字数として戻る。
3.異体字の場合
puts "辻".length
puts "辻󠄀".length
3.異体字の場合
こたえ
1
2
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 は処理系によって値が異なることがある。
 内部はどういうデータで保持しているかを想像してほしい。
 入力するユーザー(一般の人)は無慈悲だ。
# システムの都合は察してくれない
おわり
ありがとうございました

More Related Content

More from tsudaa

Json型の使い方
Json型の使い方Json型の使い方
Json型の使い方tsudaa
 
ぬぎんくす問題
ぬぎんくす問題ぬぎんくす問題
ぬぎんくす問題tsudaa
 
Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!tsudaa
 
Python と私の事情
Python と私の事情Python と私の事情
Python と私の事情tsudaa
 
真理とは何か
真理とは何か真理とは何か
真理とは何かtsudaa
 
Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介tsudaa
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロtsudaa
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返るtsudaa
 
ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)tsudaa
 
スターマークの話
スターマークの話スターマークの話
スターマークの話tsudaa
 
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)tsudaa
 
昼の12時は午○何時?
昼の12時は午○何時?昼の12時は午○何時?
昼の12時は午○何時?tsudaa
 
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介tsudaa
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題tsudaa
 
資格は役に立つか
資格は役に立つか 資格は役に立つか
資格は役に立つか tsudaa
 
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討tsudaa
 
法律の読み方とか
法律の読み方とか法律の読み方とか
法律の読み方とかtsudaa
 
C++入門?
C++入門?C++入門?
C++入門?tsudaa
 

More from tsudaa (18)

Json型の使い方
Json型の使い方Json型の使い方
Json型の使い方
 
ぬぎんくす問題
ぬぎんくす問題ぬぎんくす問題
ぬぎんくす問題
 
Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!Windows でも時刻合わせがしたい!
Windows でも時刻合わせがしたい!
 
Python と私の事情
Python と私の事情Python と私の事情
Python と私の事情
 
真理とは何か
真理とは何か真理とは何か
真理とは何か
 
Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
 
ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)ドメイン名の話 (データベース/SQL)
ドメイン名の話 (データベース/SQL)
 
スターマークの話
スターマークの話スターマークの話
スターマークの話
 
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ (大都会ver)
 
昼の12時は午○何時?
昼の12時は午○何時?昼の12時は午○何時?
昼の12時は午○何時?
 
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
資格は役に立つか
資格は役に立つか 資格は役に立つか
資格は役に立つか
 
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討○○型言語と呼ばれるために備えるべき最低限の条件についての検討
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
 
法律の読み方とか
法律の読み方とか法律の読み方とか
法律の読み方とか
 
C++入門?
C++入門?C++入門?
C++入門?