2017-04-10 68 views
-2

我想用"3"替換字母"e"。我想"elijah".my_method()返回"3lijah"如何用另一個字母替換字符串中的字母

我嘗試使用subgsub方法以及replace,但沒有一個取代了這封信。這裏是我的代碼:

class String 
    define_method(:leet_speak) do 
    containsE = self.include?("e") 

    whereIsE = self.index("e") 
    whereIsE.replace("3") 
    end 
end 
+0

不,你的代碼不會取代一封信,它會引發異常。 – Stefan

回答

1

代碼中沒有你顯示出改變了原始的字符串(self)或返回一個字符串改變。所以沒有任何反應

嘗試像這樣(我不知道你爲什麼在這裏使用define_method,但我不反對):

class String 
    define_method(:leet_speak) do 
    self.gsub("e","3") 
    end 
end 

s = "elijah".leet_speak() 

puts s # => 3lijah 
+0

_「我不知道你爲什麼在這裏使用define_method」__ - 基於我說OP不知道更好的代碼。但你當然可以;-) – Stefan

+0

謝謝,這幫助了我 –

3

String#tr方法可以讓你在一次做多的轉換。

因此,如果你想要做的一切萊特字母:

'elijah'.tr('abcdefghijklmnopqrstuvwxyz', '48cd3f9h1jklmn0pqr57uvwxy2')

回報:

3l1j4h

0
# The Replace Class 
class Replace 

    def replace_letter(string_to_replace) 
     puts string_to_replace.tr('e', '3') 
    end 

end 

# Create a new object 
main = Replace.new() 

# Output String after replace 
main.replace_letter('elijah') 

字符串#TR方法是不足以使你。 ..

相關問題