I am trying to parse a string and extract all vowels and consonants
into two separate substrings. However, I can’t get my solution to
work. Any pointers are appreciated. Here is the approach I am using:
Extended the String Class with the following methods:
class String
def vowels
self.scan(/[aeiou]|(?![aeiou])y(?![aeiou])/i)
end
def consonants
self.scan(/![aeiou]|(?=[aeiou])y(?=[aeiou])/i)
end
end
Invoke the methods:
test_paragraph = “Mary had a little lamb” @vowel_sub_str = test_paragraph.vowels @consonant_sub_str = test_paragraph.consonants
However, the result is just two empty strings. I believe the problem
is in the regular expression, but I can’t figure out just where. Any
ideas/pointers are appreciated.
A simple (but I fear not too efficient) way is:
Not sure if OP excluded non letters from the input
end
Stefano
This shall do it in one run, quite complicated code, interested if
something more elegant can be found.
class String
def v_c
each_char.inject([“”,“”]){ |r, c|
case c
when /[aeiouy]/i
[r.first << c, r.last ]
when /[^a-z]/i
r
else
[r.first, r.last << c ]
end
}
end
end
However, the result is just two empty strings. I believe the problem
is in the regular expression, but I can’t figure out just where. Any
ideas/pointers are appreciated.