2.11. Controlling Uppercase and LowercaseRuby's String class offers a rich set of methods for controlling case. This section offers an overview of these. The downcase method converts a string to all lowercase. Likewise upcase converts it to all uppercase: s1 = "Boston Tea Party" s2 = s1.downcase # "boston tea party" s3 = s2.upcase # "BOSTON TEA PARTY" The capitalize method capitalizes the first character of a string while forcing all the remaining characters to lowercase: s4 = s1.capitalize # "Boston tea party" s5 = s2.capitalize # "Boston tea party" s6 = s3.capitalize # "Boston tea party" The swapcase method exchanges the case of each letter in a string: s7 = "THIS IS AN ex-parrot." s8 = s7.swapcase # "this is an EX-PARROT." As of Ruby 1.8, there is a casecmp method which acts like the default <=> method but ignores case: n1 = "abc".casecmp("xyz") # -1 n2 = "abc".casecmp("XYZ") # -1 n3 = "ABC".casecmp("xyz") # -1 n4 = "ABC".casecmp("abc") # 0 n5 = "xyz".casecmp("abc") # 1 Each of these has its in-place equivalent (upcase!, downcase!, capitalize!, swapcase!). There are no built-in methods for detecting case, but this is easy to do with regular expressions, as shown in the following example: if string =~ /[a-z]/ puts "string contains lowercase characters" end if string =~ /[A-Z]/ puts "string contains uppercase characters" end if string =~ /[A-Z]/ and string =~ /a-z/ puts "string contains mixed case" end if string[0..0] =~ /[A-Z]/ puts "string starts with a capital letter" end Note that all these methods ignore locale. |