0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby Leet文字列に変換

Posted at

はじめに

新しく学んだ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

コード

結論から言うとこのコードで実装することができました。
次に一つ一つの解説をしていきます。

qiita.rb
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メソッドとは文字列を分解し配列にするメソッドです。

qiita.rb
word = gets.chomp.split('')

これで変数wordに分解された文字列が配列として代入することができました。

次は実際に変換して出力するコードを書いていきます。

変数wordは配列なので、each文を使い出力します。
しかしそれだけでは、ただ配列にした意味がありません。
そこでcase文を使います。

case文とは
「if」文では複数の条件式を組み合わせて複雑な分岐を行う事ができますが、一つの値に対して複数の候補の中で一致するものを探すような場合には「case」文を使用する。

qiita.rb
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

これで全ての条件式を通し該当するものは変換されて該当しないものは変換せずに出力することができました。

終わりに

自分の学習用ですので説明が分かりづらいところもあると思いますが、参考にしていただけると幸いです。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?