因为
"A".next => "B"
和
"#".next => "$"
我如何找到上一个项目?那样:
"$".previous => "#"
答案 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
最终会产生一些歧义。
致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 # => '#'