Rubyで文字列から日本語文字をインデックス指定する

Sponsored Link

このエントリーをはてなブックマークに追加
はてなブックマーク - Rubyで文字列から日本語文字をインデックス指定する
Bookmark this on Delicious
Share on LinkedIn
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark

RubyのStringインスタンスに格納されている文字列のインデックスを得るにはchrメソッドを用います。

ソースコード

# chrは文字コードObjを文字列Objに変換するメソッド
str1 = "abcdef"
p str1[2]     #=> 99
p str1[2].chr #=> "c"

インデックスはバイト換算

なので、2バイト長の日本語文字などは取り出せません。

str2 = "あいうえお"
p    str2[2]                   #=> 130
puts str2[2]                   #=> 130
p    str2[2].chr               #=> "\202"
puts str2[2].chr + str2[3].chr #=> "い"

そこで、

日本語文字列のインデックス指定はsplitメソッドで一旦配列に分割

str2  = "あいうえお"
jarr3 = str2.split(//s) # 文字コードがSJISの場合
puts  jarr3[3] #=> え

多バイト長の文字列処理を扱ったソースを読み込んで慣れていこうかな。

関連すると思われる記事:

Sponsored Link

This entry was posted in Ruby and tagged , , , . Bookmark the permalink.

Facebook comments:

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>