2017-04-10 2 views
-2

문자 "e"을 숫자 "3"으로 바꿉니다. "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을 사용하는 이유를 모르겠지만, 나는 반대가없는) 이런 식을 시도해보십시오 String#tr 방법이 있습니다

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

당신이 한 번에 여러 변환을한다.

'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') 

문자열 # 그럴 방법은 당신에게 충분

그래서 당신은 모든 리트 알파벳을하고 싶어합니다. ..

관련 문제