🦁
Ruby の String#next について
さて Ruby の文字列には String#next
(と String#succ
)というメソッドが存在しています。
これは『レシーバの文字列の次の文字列を返す』というメソッドになります。
例えば
pp "a".next
# => "b"
みたいに英字の次の文字を返したり
pp "3".next
# => "4"
みたいに数字を増やしたり
pp "*".next
# => "+"
記号だった場合は次の文字コードの文字に変換したりします。
String#next
は繰り上げ処理を行う
面白いことに String#next
は自身が 9
や z
だった場合に繰り上げ処理を行います。
どういうことかというと次のように桁が増えます。
pp "9".next # => "10"
pp "z".next # => "aa"
次のように桁が複数の場合でも繰り上げされます。
pp "39".next # => "40"
pp "bzz".next # => "caa"
# 英数字混ざっていても繰り上げされる
pp "zz9z99".next
# => "aaa0a00"
これはちょっと面白いですねー。
ちなみに間に記号がある場合はそれを無視して繰り上げがされます。
pp "1.9.9".next
# => "2.0.0"
Discussion