因此,我試圖找到一種方法來由用戶輸入唐老鴨 - ify語句(稍後判斷我)。Ruby:「未定義的方法」錯誤;如何更有效地使用gsub?
這是我到目前爲止的代碼:
puts "Wanna get Donald Duck-ified?"
print "Type some text here:"
user_input = gets.chomp
if user_input.gsub!(/s/,"th").gsub!(/ce/,"th").gsub!(/ci/,"th").gsub!(/cy/,"th")
puts "Boop - there go your s's and soft c's!"
else
puts "Dang, you didn't have any s's or soft c's!"
end
puts "#{user_input}"
在我自己的一些輸入測試它(「方形週期凱撒圈」,特別是),我得到「未定義的方法`GSUB「!爲零:NilClass「作爲錯誤。
如何GSUB!未定義?如果代碼自己使用user_input.gsub!(/s/,"th")
運行,而沒有其他任何方法,它就可以正常工作。一旦添加了第二種方法,else
代碼就會運行,並且只會替換「s」。所有四個,我得到上面的錯誤。
是否有發生與單個替換替換多個模式(如命名爲Ruby的文檔)的另一種方式?我花了最後幾個小時來研究這個問題,但我仍然無法完全知道問題所在。
新的紅寶石。鼓勵和動力。 非常感謝提前。
雙方你例子 - 特別是第二個 - 正是我一直試圖做的這一切!他們也工作過,儘管我在方法前加了'!'。我一定會在未來的時候記住你的建議。我現在有另一個困境:我有這個集合取代「ci/ce/cy」,因爲「circle」會給我「thrcle」,哈哈。現在要弄清楚如何識別以「ci」開頭的單詞和僅替換「c」的單詞。當你解決了一個,一個又一個,哈哈。感謝您的幫助:) –
@adamantly_so正則表達式中的單詞邊界錨將是'\ b'。 –