String クラスの chars
メソッド(別名 each_char
)を使用すると、文字列内の文字を1文字ずつ取り出しながら処理することができます。
s = 'ABC'
p s.chars
s.chars { |ch| puts ch }
$ ruby sample.rb
["A", "B", "C"]
A
B
C
文字列内の文字1文字ごとのコードポイントを取得するには、codepoints
(別名 each_codepoint
)を使用します。
# encoding: utf-8
s = 'ABCあいう'
s.codepoints { |x| printf('U+%04X ', x) }
$ ruby sample.rb
U+0041 U+0042 U+0043 U+3042 U+3044 U+3046
もとの文字とコードポイントの対応付けがわかるようにするには、下記のように ord
メソッドを組み合わせて使用するのがよいでしょう。
ord
は、その文字列の先頭の文字のコードポイントを返します。
# encoding: utf-8
s = 'ABCあいう'
s.chars { |ch| printf("U+%04X %s\n", ch.ord, ch) }
U+0041 A
U+0042 B
U+0043 C
U+3042 あ
U+3044 い
U+3046 う
Java や C++ には、1 文字を表す char
型がありますが、Ruby の場合はすべて文字列です。
なので、下記のように分割したあとの型 (class
) を調べると、String
と表示されます。
'ABC'.each_char do |ch|
puts "#{ch} -- #{ch.class}"
end
A -- String
B -- String
C -- String