我想在我的編碼字符串中找到每個元素的後繼者。例如K-> M A-> C等。Ruby字符串翻譯
string.each_char do |ch|
dummy_string<< ch.succ.succ
end
然而,這種方法翻譯y-> aa。
Ruby中的方法是否像Python中的maketrans()一樣?
我想在我的編碼字符串中找到每個元素的後繼者。例如K-> M A-> C等。Ruby字符串翻譯
string.each_char do |ch|
dummy_string<< ch.succ.succ
end
然而,這種方法翻譯y-> aa。
Ruby中的方法是否像Python中的maketrans()一樣?
您好像在尋找String#tr。使用像這樣:some_string.tr('a-zA-Z', 'c-zabC-ZAB')
我不知道一個副手,但我認爲Ruby的方式可能會涉及到一個塊傳遞給正則表達式函數。這是一個愚蠢的,只適用於大寫字母:
"ABCYZ".gsub(/\w/) { |a| a=="Z" ? "A" : a.succ }
=> "BCDZA"
編輯:meh,沒關係,聽Pesto,他聽起來很聰明。
def successor(s)
s.tr('a-zA-Z','c-zabC-ZAB')
end
successor("Chris Doggett") #"Ejtku Fqiigvv"
z之後有什麼ab?我如何解釋? – unj2 2009-05-01 21:29:34
它基本上意味着字母a-z將被字母c-z,a和b代替。由於範圍c-z縮短了兩個字符,顯然你可以指定額外的字符。 儘管如此,這似乎是非常奇怪的語法。儘管如此。 – Burke 2009-05-02 11:28:33