我找到了以下ruby代码。它从a-z
转换为b-za
。
Q1。什么是za
?
Q2。 zb, zc
等是下一个吗?
Q3。有zz
吗?如果是,那么zz
之后是什么?
while s = gets
until s =~ /that|the|this/
s.tr!('a-z', 'b-za')
end
puts s
end
答案 0 :(得分:1)
String#tr
允许c1-c2
作为范围字符的简写表示法:
a-z
扩展为abcdefghijklmnopqrstuvwxyz
b-z
扩展为bcdefghijklmnopqrstuvwxyz
b-za
为b-z
后跟一个a
,即bcdefghijklmnopqrstuvwxyza
最后s.tr!('a-z', 'b-za')
使用此映射替换字母表中下一个字母的每个字母:
from_str: abcdefghijklmnopqrstuvwxyz
to_str: bcdefghijklmnopqrstuvwxyza
答案 1 :(得分:0)
不是b-(za)
,而是(b-z)a
。'a-d'
只是'abcd'
的快捷方式。
tr
方法(和tr!
)取两个字符串,并将第一个字符串中每个字母的每次出现替换为来自同一位置的第二个字符串中的字母(如果第二个字符串为短)。所以:
'abcdef'.tr('a-d','*') #=> '****ef'
现在,字符串'a-z'
是任何字母(向下)的快捷方式,您可以使用'b-za'
替换'bcdef...xyza'
,这是'abcdefz'.tr('a-z', 'b-za') #=> 'bcdefga'
的快捷方式所以:
{{1}}