[ruby]文字数を数える
2009/07/16
昨日からの悩みであったrubyにおける多バイト文字列の文字数を数える方法なんですが、結構簡単に解決策が見つかりました。
やっぱり皆さん同じことで悩んでいたのね。
rubyで文字数を数えるには?
http://d.hatena.ne.jp/onering/20080625/1214379779
普通に文字列の長さを
って求めると、文字列の長さではなくバイト長が求められる。
私の環境ではunicodeで日本語を扱っているので、単純に1文字のバイト数も決められない。
昨日調べたところでは、正規表現を使って文字列の長さを求めるらしいところまでは判明したものの、やり方がわからなかった。
unicodeの多バイト文字かどうか文字コードのあるビットを調べる正規表現でも書くのかと思い、憂鬱になっていました。
今日になり、やっぱり他にいい方法がないかと調べてみると、あっさりと以下の例を見つけました。
splitは引数で与えられた文字により、文字列を分割して配列として返すもの。
引数に「//」って空の正規表現を与えることで、1文字ずつ分割して配列にしてくれます。
帰ってきた配列の個数をsizeで求めれば、めでたく文字数が分かるって寸法です。
あったまいい~!
こんなにシンプルに文字列の長さが求められるとは。。。
私もまだまだ修行が足りないですね。
やっぱり皆さん同じことで悩んでいたのね。
rubyで文字数を数えるには?
http://d.hatena.ne.jp/onering/20080625/1214379779
普通に文字列の長さを
str.length
って求めると、文字列の長さではなくバイト長が求められる。
私の環境ではunicodeで日本語を扱っているので、単純に1文字のバイト数も決められない。
昨日調べたところでは、正規表現を使って文字列の長さを求めるらしいところまでは判明したものの、やり方がわからなかった。
unicodeの多バイト文字かどうか文字コードのあるビットを調べる正規表現でも書くのかと思い、憂鬱になっていました。
今日になり、やっぱり他にいい方法がないかと調べてみると、あっさりと以下の例を見つけました。
$ ruby script/console
Loading development environment (Rails 2.3.2)
>> str = "あいうえお"
=> "あいうえお"
>> str.length
=> 15
>> str.split(//).size
=> 5
>>
splitは引数で与えられた文字により、文字列を分割して配列として返すもの。
引数に「//」って空の正規表現を与えることで、1文字ずつ分割して配列にしてくれます。
帰ってきた配列の個数をsizeで求めれば、めでたく文字数が分かるって寸法です。
あったまいい~!
こんなにシンプルに文字列の長さが求められるとは。。。
私もまだまだ修行が足りないですね。