読者です 読者をやめる 読者になる 読者になる

String#succは、辞書順ではない

ぼけっとしてて気づいてなかった。

"999"の辞書順で次の文字列は、"999a"や"9990"であって、"1000"ではない。

["999", "1000"].max
 => "999"
["999", "999".succ].max
 => "999"

後者は直感的に変だと思うんだけど。

ひとまず、適当に辞書順になりそうな感じのメソッドを定義して逃げることに。

class String
  def succc
    case self[-1]
    when "9"
      self + "0"
    when "z"
      self + "a"
    when "Z"
      self + "A"
    else
      self.succ
    end
  end

  def nexxt
    self.succc
  end
end

cとxが一つずつ多い。