kind=defined
names=next,succ
visibility=public

--- succ -> String
--- next -> String

self の「次の」文字列を返します。

「次の」文字列は、対象の文字列の右端から
アルファベットなら アルファベット順(aの次はb, zの次はa, 大文字も同様)に、 
数字なら 10 進数(9 の次は 0)とみなして計算されます。

  p "aa".succ        # => "ab"
  p "88".succ.succ   # => "90"

"99" → "100", "AZZ" → "BAA" のような繰り上げも行われます。
このとき負符号などは考慮されません。

    p "99".succ   # => "100"
    p "ZZ".succ   # => "AAA"
    p "a9".succ   # => "b0"
    p "-9".succ   # => "-10"

self にアルファベットや数字とそれ以外の文字が混在している場合、
アルファベットと数字だけが「次の」文字になり、残りは保存されます。

    p "1.9.9".succ # => # "2.0.0"

逆に self がアルファベットや数字をまったく含まない場合は、
単純に文字コードを 1 増やします。

    p ".".succ     # => "/"

さらに、self が空文字列の場合は "" を返します。
このメソッドはマルチバイト文字を意識せず、
単に文字列をバイト列として扱います。

なお、succ と逆の動作をするメソッドはありません。
また、succ という名前の由来は successor です。


例:
    p "aa".succ   # => "ab"

    # 繰り上がり
    p "99".succ   # => "100"
    p "a9".succ   # => "b0"
    p "Az".succ   # => "Ba"
    p "zz".succ   # => "aaa"
    p "-9".succ   # => "-10"
    p "9".succ    # => "10"
    p "09".succ   # => "10"

    # アルファベット・数字とそれ以外の混在
    p "1.9.9".succ # => # "2.0.0"

    # アルファベット・数字以外のみ
    p ".".succ     # => "/"
    p "\0".succ    # => "\001"
    p "\377".succ  # => "\001\000"

このメソッドは文字列の [[c:Range]] の内部で使用されます。

