2011年01月11日

Rubyでマルチバイト文字列の長さを取得する

言語:Ruby

Rubyでマルチバイト文字列の長さを取得する方法を説明します。
半角文字ならば、Stringクラスのsizeメソッドやlengthメソッドを呼べば良いのですが、これらのメソッドはバイト数を返すのでマルチバイト文字列の場合は文字数と一致しません。

そこで、マルチバイト文字列の場合は、まず、文字列を1文字ずつに分割して配列に格納し、その配列の要素数を取得するという方法をとります。

次は、文字コードがUTF-8の場合のマルチバイト文字列の長さを取得するRubyスクリプトです。
p "abc".split(//u).size
p "あいう".split(//u).size

splitメソッドで文字列を1文字ずつに分割して、sizeメソッドでその配列の要素数を取得しています。
splitメソッドの引数//uは文字列を1文字ずつに分割する正規表現です。文字コードがUTF-8の場合は//の後にuを置きます。文字コードがEUC-JPなら//eとなり、Shift_JISなら//sとなります。
このスクリプトを実行すると、以下のような結果になります。
3
3

半角文字でも、マルチバイト文字でも、正しい文字数が取得できていることがわかります。


    • 0 Comment |
    • 0 Trackback |
    • このエントリーをはてなブックマークに追加
    • Edit

この記事へのトラックバックURL

 

トラックバックはまだありません。

コメントはまだありません。

コメントする。

絵文字
 
星  顔