字符串整数

假设您有字符串"Hi" 。 你如何得到8的值( "H"是字母表的第8个字母, "i"是第9个字母)。 然后说,在这些整数中加1并使其成为9然后可以将其重新组成字符串"Ij" ? 可能吗?

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

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

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

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

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

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

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

保留案例并假设您想要在“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"