🦁

Ruby の String#next について

2024/02/03に公開

さて Ruby の文字列には String#next (と String#succ )というメソッドが存在しています。
これは『レシーバの文字列の次の文字列を返す』というメソッドになります。
例えば

pp "a".next
# => "b"

みたいに英字の次の文字を返したり

pp "3".next
# => "4"

みたいに数字を増やしたり

pp "*".next
# => "+"

記号だった場合は次の文字コードの文字に変換したりします。

String#next は繰り上げ処理を行う

面白いことに String#next は自身が 9z だった場合に繰り上げ処理を行います。
どういうことかというと次のように桁が増えます。

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"
GitHubで編集を提案

Discussion