字符串整数
假设您有字符串"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"