Leider ist es für eine Maschine unmöglich, richtig auf- / abzusteigen / groß zu schreiben. Es braucht viel zu viele Kontextinformationen, als dass ein Computer sie verstehen könnte.
Aus diesem Grund unterstützt Rubys String
Klasse nur die Großschreibung von ASCII-Zeichen, da sie dort zumindest etwas genau definiert ist.
Was meine ich mit "Kontextinformationen"?
Um beispielsweise i
richtig groß zu schreiben, müssen Sie wissen, in welcher Sprache der Text geschrieben ist. Englisch hat beispielsweise nur zwei i
s: Großbuchstaben I
ohne Punkt und Klein i
mit einem Punkt. Aber Türkisch hat vier i
s: Kapital I
ohne Punkt, Kapital İ
mit einem Punkt, klein ı
ohne Punkt, klein i
mit einem Punkt. Also auf Englisch 'i'.upcase # => 'I'
und Türkisch 'i'.upcase # => 'İ'
. Mit anderen Worten: Da 'i'.upcase
je nach Sprache zwei unterschiedliche Ergebnisse zurückgegeben werden können, ist es offensichtlich unmöglich, ein Wort richtig zu groß zu schreiben, ohne seine Sprache zu kennen.
Aber Ruby kennt die Sprache nicht, sondern nur die Kodierung. Daher ist es unmöglich, eine Zeichenfolge mit Rubys integrierter Funktionalität richtig zu aktivieren.
Es kommt noch schlimmer: Auch mit der Sprache zu kennen, ist es manchmal unmöglich ist Kapitalisierung richtig zu machen. Zum Beispiel auf Deutsch 'Maße'.upcase # => 'MASSE'
( Maße ist der Plural von Maß, was Messung bedeutet ). Jedoch 'Masse'.upcase # => 'MASSE'
(was Masse bedeutet ). Also, was ist 'MASSE'.capitalize
? Mit anderen Worten: Für eine korrekte Großschreibung ist eine umfassende künstliche Intelligenz erforderlich.
Anstatt also manchmal die falsche Antwort zu geben, Rubin wählt manchmal keine Antwort geben überhaupt , weshalb nicht-ASCII - Zeichen einfach in downcase ignoriert get / upcase / Operationen nutzen. (Was natürlich auch zu falschen Ergebnissen führt, aber zumindest ist es leicht zu überprüfen.)