ich einige Buchstaben von einem Wort zu extrahieren und die Buchstaben durch ihr chemisches Symbol ersetzen.Wie ersetzen Buchstaben in einem String mit einem Hash-Wert
Dies funktioniert, aber es ist toooo lang. Ich bin sicher, es gibt eine Möglichkeit, es kürzer zu machen:
puts "Enter your name"
name = gets.chomp
if name.include? 'br'
name.gsub!('br', 'Br')
end
if name.include? 'ba'
name.gsub!('ba', 'Ba')
end
if name.include? 'cr'
name.gsub!('cr', 'Cr')
end
if name.include? 'ac'
name.gsub!('ac', 'Ac')
end
if name.include? 'al'
name.gsub!('al', 'Al')
end
if name.include? 'am'
name.gsub!('am', 'Am')
end
Ich versuche, dies zu tun, aber es funktioniert nicht. Was ist falsch?
puts "Enter your name"
name = gets.chomp
symbols = {
:ac => "Ac",
:al => "Al",
:am => "Am",
:br => "Br",
:ba => "Ba",
:cr => "Cr"
}
if name.include? symbols
symbols.each{ |key, value| name.gsub!(key, value) }
end
puts name
bekomme ich folgende Fehlermeldung:
breakingbad.rb:15:in `include?': no implicit conversion of Hash into String (TypeError)
from breakingbad.rb:15:in `<main>'
, die perfekt aber ich funktioniert nicht wirklich verstehen, diese Zeile 'name.gsub (/ # {symbols.keys.join ('|')} /, Symbole)' können Sie erklären, es ein bisschen bitte? –
, dass ein regulärer Ausdruck ist, äquivalent zu '/ (ac | al | am | br | ba | cr) /'. Ihr Code sollte auch funktionieren, wenn Sie 'to_s' auf dem Symbol aufrufen. 'symbols.each {| Schlüssel, Wert | name.gsub! (key.to_s, Wert)} '. Auch 'wenn name.include? Symbole "ist falsch. include-Methode erwartet ein String-Argument. – Santhosh
alles in Ordnung! Dank viel :) –