字母和符号数组的下一个和上一个

时间:2013-12-06 00:03:31

标签: ruby arrays

因为

"A".next => "B"

"#".next => "$"

我如何找到上一个项目?那样:

"$".previous => "#"

3 个答案:

答案 0 :(得分:2)

来自What is the opposite of string.next?

  

prev或类似内容不在标准API中,因为succ和次数prev是完全的。尽管如此,“Implement Ruby String Class Prev / Pred / Prev! / Pred! - Opposite Of Next / Succ Methods”是您可以使用的可能版本。

     

根本问题是succ不可逆。这意味着,一旦您应用了succ,那么prev最终会产生一些歧义。

     

surjective map of succ and prev

Bjoern Rennhak的信用。

答案 1 :(得分:2)

如果你只需要它来处理单个字符串,你可以扩展String:

class String
  def previous
    return (self.ord - 1).chr
  end
end

然后:

"$".previous # => "#"

我不是一个大红宝石程序员,所以我不知道这种做法有多糟糕,但是如果你需要的话,它确实有效。

答案 2 :(得分:1)

以下是为单个角色执行此操作的一种方法:

('B'.ord-1).chr # => 'A'
('$'.ord-1).chr # => '#'