Ruby поддерживает только преобразования регистра букв A
- Z
и a
- z
.
Причина этого заключается просто в том, что преобразования регистра для других букв не определены четко. Например, на турецком 'I'.downcase # => 'ı'
и 'i'.upcase # => 'İ'
, но на французском 'I'.downcase # => 'i'
и 'i'.upcase # => 'I'
. Ruby должен знать не только кодировку символов, но и язык, чтобы сделать это правильно.
Еще хуже, на немецком
'MASSE'.downcase
равно либо
'maße' # "measurements"
'masse' # "mass"
Другими словами: вам действительно нужно понять текст, т. Е. Вам нужен полноценный ИИ, чтобы правильно преобразовывать регистры.
И я сам фактически однажды случайно построил предложение, которое было неразрешимо даже для человека .
Короче говоря: это просто невозможно сделать правильно, поэтому Ruby этого не делает вообще . Однако существуют сторонние библиотеки, такие как библиотека Unicode и ActiveSupport, которые do поддерживают несколько больший набор символов.