Как взять строку и преобразовать ее в нижний или верхний регистр в Ruby?
Как взять строку и преобразовать ее в нижний или верхний регистр в Ruby?
Ответы:
В Ruby есть несколько способов изменить регистр строк. Чтобы преобразовать в нижний регистр, используйте downcase
:
"hello James!".downcase #=> "hello james!"
Аналогично, upcase
заглавные буквы каждой буквы и capitalize
заглавные буквы первой буквы строки, но строчные буквы остальных:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
Если вы хотите изменить строку на месте, вы можете добавить восклицательный знак в любой из этих методов:
string = "hello James!"
string.downcase!
string #=> "hello james!"
Обратитесь к документации для String для получения дополнительной информации.
nil
; вы должны использовать их, если вы хотите изменить объект на месте, а не если вы хотите сохранить значение в другой переменной.
.titleize
это от Rails. Не могу найти его в String
документации по ruby
titleize
необходимо удалить из этого ответа или хотя бы указать, что это метод Rails.
Вы можете узнать все методы, доступные для String, открыв irb и выполнив:
"MyString".methods.sort
И для списка методов, доступных для строк, в частности:
"MyString".own_methods.sort
Я использую это, чтобы найти новые и интересные вещи об объектах, которые я, возможно, не знал бы, существовал.
String.public_instance_methods(false)
чтобы найти все общедоступные методы экземпляра, специально определенные String
.
Как упомянуто @endeR, если интернационализация является проблемой, гем unicode_utils более чем достаточен.
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
Манипуляции со строками в Ruby 2.4 теперь чувствительны к юникоду.
Метод ruby downcase
возвращает строку с заглавными буквами, замененными строчными.
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
Рельсы Active Support камень обеспечивает upcase
, downcase
, swapcase
, capitalize
и т.д. методы с поддержкой интернационализации:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
Вы можете найти струнный метод , как "strings".methods
вы можете определить строку как upcase
, downcase
, titleize
. Например,
"hii".downcase
"hii".titleize
"hii".upcase
Метод .swapcase преобразует символы верхнего регистра в строку в нижний регистр и буквы нижнего регистра в верхний регистр.
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
Начиная с Ruby 2.4, в Unicode встроено полное отображение регистров . Источник: https://stackoverflow.com/a/38016153/888294 . Подробности смотрите в документации по Ruby 2.4.0: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
Не подойдет для всех, но это сэкономило мне кучу времени. У меня просто была проблема с CSV, возвращающим «TRUE» или «FALSE», поэтому я просто добавил VALUE.to_s.downcase == «true», который будет возвращать логическое true, если значение «TRUE», и false, если значение «FALSE». ", но все равно будет работать для логического значения true и false.