From: tamouse mailing lists Date: 2012-12-06T17:03:33+09:00 Subject: Re: Having isues with capitalizing words On Thu, Dec 6, 2012 at 12:39 AM, tamouse mailing lists wrote: > On Wed, Dec 5, 2012 at 10:10 PM, Matthew Kerwin wrote: >> Try using "and"s instead of "or"s. >> >> >> On 6 December 2012 14:02, JD KF wrote: >>> >>> So, this is a method I have made: >>> >>> def title(words) >>> words.gsub(/(\A|\s)\w/) do |word| >>> if(word!="and" || word!="an" || word!="the") >>> word.upcase >>> else >>> word.downcase >>> end >>> end >>> end >>> >>> I have been trying to solve this for the longest time and I can't figure >>> it out. >>> >>> All I want the method to do is take in a string and capitalize every >>> word except for "and" and "an" and "the". >>> >>> The above will not do it and I really don't understand why. I have >>> tried a million versions of it as well. >>> >>> Can someone help me get in the right direction with this? >>> >>> -- >>> Posted via http://www.ruby-forum.com/. >>> >> >> >> >> -- >> Matthew Kerwin, B.Sc (CompSci) (Hons) >> http://matthew.kerwin.net.au/ >> ABN: 59-013-727-651 >> >> "You'll never find a programming language that frees >> you from the burden of clarifying your ideas." - xkcd > > or... > > > 1.9.3-p194 :062 > phrase="the quick brown fox or a rabbit in the hen house" > => "the quick brown fox or a rabbit in the hen house" > 1.9.3-p194 :064 > title=phrase.split.each{|w| unless %{and or a > the}.include?(w) then w[0]=w[0].upcase end; w}.join(" ") > => "the Quick Brown Fox or a Rabbit In the Hen House" > 1.9.3-p194 :065 > title[0]=title[0].upcase > => "T" > 1.9.3-p194 :066 > title > => "The Quick Brown Fox or a Rabbit In the Hen House" > Combine sagy's and mine: words.gsub!(/\w+/)do |match| %w{and or a an the of}.includes?(match) ? match : match.capitalize end (or just use gsub without the ! if you want to work on a copy instead of original)