I am using a hash map to advance the character by position: "a"
into "b"
, etc., and to capitalize vowels.
def LetterChanges(str)
str.to_s
puts str
h = ("a".."z").to_a
i = ("b".."z").to_a.push("a")
hash = Hash[h.zip i]
new_str = str.downcase.gsub(/[a-z]/,hash)
new_str.gsub!(/[aeiou]/) {|n| n.upcase }
end
LetterChanges("hello world")
LetterChanges("sentence")
LetterChanges("replace!*")
LetterChanges("coderbyte")
LetterChanges("beautiful^")
LetterChanges("oxford")
LetterChanges("123456789ae")
LetterChanges("this long cake@&")
LetterChanges("a b c dee")
LetterChanges("a confusing /:sentence:/[ this is not!!!!!!!~")
The above code works as expected except for the examples "replace!*"
and "123456789ae"
, for which it returns nil
. Why is this?
str.tr("a-z", "bcdEfghIjklmnOpqrstUvwxyzA")
– steenslag Jun 11 '15 at 15:04gsub!
returnnil
?" - it is specifically mentioned in the documentation. – Sergio Tulentsev Jun 6 '17 at 7:09