字符串整数

时间:2014-06-21 01:30:46

标签: ruby string integer alphabet

假设你有字符串"Hi"。如何获得8的值,9"H"是字母表的第8个字母,"i"是第9个字母)。然后说,将1添加到这些整数并将其设为910然后可以将其返回到字符串"Ij"中?有可能吗?

4 个答案:

答案 0 :(得分:3)

注意 Cary Swoveland在对该问题的评论中已经给出了相同的答案。

通过数字8和9不可能这样做,因为这些数字不包含有关字母大小写的信息。但是如果你不坚持通过数字8和9转换字符串,而是更有意义的数字,如ASCII代码,那么你可以这样做:

"Hi".chars.map(&:next).join
# => "Ij"

答案 1 :(得分:2)

使用ord获取ASCII索引,使用chr将其恢复。

'Hi'.chars.map{|x| (x.ord+1).chr}.join

答案 2 :(得分:0)

您还可以使用codepoints方法从字符串创建可枚举的字符序号。

string = "Hi"

string.codepoints.map{|i| (i + 1).chr}.join
=> "Ij"

答案 3 :(得分:0)

保留案例并假设你想要在" Z":

upper = [*?A..?Z]
lower = [*?a..?z]
LOOKUP = (upper.zip(upper.rotate) + lower.zip(lower.rotate)).to_h
s.each_char.map { |c| LOOKUP[c] }.join
#=> "Ij"