Web + Life Hack

〜True But Useless〜

【ruby】【rails】抑えておきたい!サクッと「漢字」の文字数をカウントする方法

文字数」をキーにロジックを組むことって結構ありますよね。


例えばこんな場合

  • 受け渡された文字列が一定の文字数を超えていた場合、別の文言に切り替える
  • 受け渡された文字列が一定の文字数を超えていた場合、表示しない



それがおなじみの「size」や「count」なら問題ないのですが今回は、

「漢字の文字数カウント」

だったので今後のことも考えて残しておきたい思います。

そもそも漢字だったらどうなるの?

という訳で漢字だとこんな感じ。。。
(railsのコンソールを開いてます。)

>> str = '北海道 札幌市'
=> "北海道 札幌市"

>> str.size
=> 19

>> str.length
=> 19


なんでこんな数字になるの?

これはバイト数(railsのコンソールはUTFなので漢字は
UTF-8による符号化で、漢字や仮名などの表現に3バイトを要するらしい。)

http://ja.wikipedia.org/wiki/UTF-8


んじゃどうするの?

>> str = '北海道札幌市'
=> "北海道札幌市"

>> str.split(//).size
=> 6

>> str = '北海道 札幌市’
=> "北海道 札幌市”

>> str.split(//).size
=> 7

>> str = '北海道 札幌市'
=> "北海道 札幌市" 

>> str.split(//).size
=> 7 

条件分岐で使う場合は空白の場合、半角も全角も1文字として認識されるみたいなので
ご注意を!


参考サイト
http://asamav6.naganoblog.jp/e283284.html