From: "rpardee@..." Date: 2005-10-08T10:11:50+09:00 Subject: Re: Code for title-casing (US) snail addresses? Far out--I'm going to have to ponder that one--learn what inject() does. For now, here's what I've settled on: @abbreviations = %w(PO NE NW SE SW P.O. N.E. N.W. S.E. S.W. C/O P.O) @suffixes = %w(ST ND RD TH) @prefixes = %w(Mc O' D') @dash_reg = Regexp.new("([-/\"][A-Za-z])") def prettify(address) ret = Array.new address.split(' ').each do |word| word.capitalize! unless (@abbreviations.include?(word) or word[0..0] =~ /[0-9#]/ ) word[2..2] = word[2..2].upcase if @prefixes.include?(word[0..1]) word[-2, 2] = word[-2, 2].downcase if @suffixes.include?(word[-2,2]) ret << word end ret = ret.join(' ') # puts ret if ret =~ @dash_reg then ret.gsub(@dash_reg, $1.upcase) else ret end end This seems to handle both apartment numbers, and hyphenated street names: prettify("1234 SLEATER-KINNEY RD #A5")