大小写转换

一些面向字符串的方法使用大小写转换。

在 String 中

在 Symbol 中

默认大小写转换

默认情况下,所有这些方法都使用全 Unicode 大小写映射,这适用于大多数语言。请参阅 Unicode 标准的第 3.13 节(默认大小写算法)

UTF-8、UTF-16BE/LE、UTF-32BE/LE 和 ISO-8859-1~16 字符串/符号支持非 ASCII 大小写映射和折叠。

Unicode 标准的 表 3-17(大小写转换的上下文规范) 中所述的上下文相关大小写映射目前不受支持。

在大多数情况下,字符串的大小写转换具有相同数量的字符。存在例外(另请参见下文的 :fold

s = "\u00DF" # => "ß"
s.upcase     # => "SS"
s = "\u0149" # => "ʼn"
s.upcase     # => "ʼN"

大小写映射还可能取决于语言环境(另请参见下文的 :turkic

s = "\u0049"        # => "I"
s.downcase          # => "i" # Dot above.
s.downcase(:turkic) # => "ı" # No dot above.

大小写更改可能不可逆

s = 'Hello World!' # => "Hello World!"
s.downcase         # => "hello world!"
s.downcase.upcase  # => "HELLO WORLD!" # Different from original s.

大小写更改方法可能无法维持 Unicode 规范化。请参阅 String#unicode_normalize)。

大小写映射选项

除了 casecmpcasecmp?,上面列出的每个大小写映射方法都接受可选参数 *options

参数可以是

选项