はじめに
新しく学んだLeet文字列の変換
Leet文字列とは
たとえば、「Warez」という語を leet で表記すると、「W@rez」や「W4r3z」などとなるように、一部のアルファベットを形の似たアラビア数字や記号などに変化させる。
表記法は、「for」や「to」をそれぞれ似た発音の「4」や「2」で代用したり、同様に「you」を「u」と置き換えたり、複数形の「s」を「z」に変えたり、「cks」または「ks」で終わる単語を「x」に差し替えたり、故意に綴りを誤って表記したり、大文字と小文字を混在させたりするなど、多様である。
問題
変換前 | 変換後 |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
E | 5 |
コード
結論から言うとこのコードで実装することができました。
次に一つ一つの解説をしていきます。
word = gets.chomp.split('')
word.each do |w|
case w
when 'A'
print '1'
when 'B'
print '2'
when 'C'
print '3'
when 'D'
print '4'
when 'E'
print '5'
else
print w
end
end
解説
まずはじめに入力を受け付けるgets.chomp
入力された文字列をsplitメソッド
を使う。
splitメソッド
とは文字列を分解し配列にするメソッドです。
word = gets.chomp.split('')
これで変数word
に分解された文字列が配列として代入することができました。
次は実際に変換して出力するコードを書いていきます。
変数word
は配列なので、each文
を使い出力します。
しかしそれだけでは、ただ配列にした意味がありません。
そこでcase文
を使います。
case文とは
「if」文では複数の条件式を組み合わせて複雑な分岐を行う事ができますが、一つの値に対して複数の候補の中で一致するものを探すような場合には「case」文を使用する。
word.each do |w|
case w
when 'A'
print '1'
when 'B'
print '2'
when 'C'
print '3'
when 'D'
print '4'
when 'E'
print '5'
else
print w
end
end
これで全ての条件式を通し該当するものは変換されて該当しないものは変換せずに出力することができました。
終わりに
自分の学習用ですので説明が分かりづらいところもあると思いますが、参考にしていただけると幸いです。