假设您有一个字符/字符串,“A”。
如果将“1”添加到“A”,您会将其转换为“B”。如果我添加'2',它应该转换为'C',依此类推......
答案 0 :(得分:2)
您可以通过.ord
'a'.ord # => 97
'a'.ord + 2 # => 99
('a'.ord + 2).chr # => "c"
('A'.ord + 5).chr # => "F"
答案 1 :(得分:1)
也许是这样的?:
$ctrl.selected = $ctrl.foo;
答案 2 :(得分:0)
进一步Sergio's answer,你可以隔离字母 - 并使用模数。
class String
def plus n
case self
when ('a'..'z')
(((ord - 97 + n) % 26) + 97).chr #ord means self.ord
when ('A'..'Z')
(((ord - 65 + n) % 26) + 65).chr
else
raise "single-letters only"
end
end
end
'a'.plus 2 #=> 'c'
'z'.plus 1 #=> 'a'
'A'.plus 0 #=> 'A'
'Z'.plus 9 #=> 'I'
'/'.plus 1 #=> test.rb:9:in `plus': single-letters only (RuntimeError)
您的问题尚不清楚,但正如Stefan的评论所暗示的那样,您可能需要'A' + 1 #=> 'B'
符号。 Ruby允许覆盖String#+
。但不要这样做,这只是为了告诉你,你可以:
class String
def +(n)
#code as above...
end
end
然后通过语法糖,你可以做:
'a' + 2 #=> 'c'
'z' + 1 #=> 'a'
'A' + 0 #=> 'A'
'Z' + 9 #=> 'I'
'/' + 1 #=> test.rb:9:in `plus': single-letters only (RuntimeError)