The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition)

2.11. Controlling Uppercase and Lowercase

Ruby'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.

Категории