Case Mapping
Einige zeichenkettenorientierte Methoden verwenden Case Mapping.
In String
In Symbol
Standard-Case-Mapping
Standardmäßig verwenden alle diese Methoden die vollständige Unicode-Case-Mapping, die für die meisten Sprachen geeignet ist. Siehe Abschnitt 3.13 (Default Case Algorithms) des Unicode-Standards.
Nicht-ASCII-Case-Mapping und -Faltung werden für UTF-8, UTF-16BE/LE, UTF-32BE/LE und ISO-8859-1~16 Strings/Symbole unterstützt.
Kontextabhängiges Case-Mapping, wie in Tabelle 3-17 (Context Specification for Casing) des Unicode-Standards beschrieben, wird derzeit nicht unterstützt.
In den meisten Fällen hat die Umwandlung der Groß-/Kleinschreibung eines Strings die gleiche Anzahl von Zeichen wie zuvor. Es gibt Ausnahmen (siehe auch :fold unten)
s = "\u00DF" # => "ß" s.upcase # => "SS" s = "\u0149" # => "ʼn" s.upcase # => "ʼN"
Case-Mapping kann auch vom Locale abhängen (siehe auch :turkic unten)
s = "\u0049" # => "I" s.downcase # => "i" # Dot above. s.downcase(:turkic) # => "ı" # No dot above.
Groß-/Kleinschreibungsänderungen sind möglicherweise nicht umkehrbar
s = 'Hello World!' # => "Hello World!" s.downcase # => "hello world!" s.downcase.upcase # => "HELLO WORLD!" # Different from original s.
Methoden zur Änderung der Groß-/Kleinschreibung erhalten möglicherweise keine Unicode-Normalisierung. Siehe String#unicode_normalize.
Case Mappings
Mit Ausnahme von casecmp und casecmp? akzeptiert jede der oben aufgeführten Case-Mapping-Methoden ein optionales Argument, mapping.
Das Argument ist einer von
-
:ascii: Nur ASCII-Mapping. Großbuchstaben ('A'..'Z') werden auf Kleinbuchstaben ('a'..'z') abgebildet; andere Zeichen werden nicht geänderts = "Foo \u00D8 \u00F8 Bar" # => "Foo Ø ø Bar" s.upcase # => "FOO Ø Ø BAR" s.downcase # => "foo ø ø bar" s.upcase(:ascii) # => "FOO Ø ø BAR" s.downcase(:ascii) # => "foo Ø ø bar"
-
:turkic: Vollständiges Unicode-Case-Mapping. Für die türkischen Sprachen, die zwischen gepunktetem und unpunktiertem I unterscheiden, z. B. Türkisch und Aserbaidschanisch.s = 'Türkiye' # => "Türkiye" s.upcase # => "TÜRKIYE" s.upcase(:turkic) # => "TÜRKİYE" # Dot above. s = 'TÜRKIYE' # => "TÜRKIYE" s.downcase # => "türkiye" s.downcase(:turkic) # => "türkıye" # No dot above.
-
:fold(nur verfügbar fürString#downcase,String#downcase!undSymbol#downcase). Unicode-Case-Faltung, die weiter reicht als Unicode-Case-Mapping.s = "\u00DF" # => "ß" s.downcase # => "ß" s.downcase(:fold) # => "ss" s.upcase # => "SS" s = "\uFB04" # => "ffl" s.downcase # => "ffl" s.upcase # => "FFL" s.downcase(:fold) # => "ffl"