Как преобразовать строку в нижний или верхний регистр в Ruby

Ответы:

1590

В 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 для получения дополнительной информации.

Софи Альперт
источник
2
Я подумала об этом только после того, как ответила, но я все равно дам вам должное за то, что вы нашли время ответить на это. Спасибо!
Heat Miser
3
Осторожно! выглядит как использование взрыва "!" вернет ноль, если нет заглавной буквы. так что str = "this" возвращает str = nil
Phil_Ken_Sebben
12
Часто возвращаются "методы взрыва" nil; вы должны использовать их, если вы хотите изменить объект на месте, а не если вы хотите сохранить значение в другой переменной.
Софи Альперт
6
.titleizeэто от Rails. Не могу найти его в Stringдокументации по ruby
ronald8192
3
titleizeнеобходимо удалить из этого ответа или хотя бы указать, что это метод Rails.
Сагар Панди
122

Вы можете узнать все методы, доступные для String, открыв irb и выполнив:

"MyString".methods.sort

И для списка методов, доступных для строк, в частности:

"MyString".own_methods.sort

Я использую это, чтобы найти новые и интересные вещи об объектах, которые я, возможно, не знал бы, существовал.

mlambie
источник
12
Единственная проблема с этим ответом состоит в том, что #own_methods, кажется, не существует. Это из расширения Irb?
Марк Уилден
12
Привет - я думал, что тогда узнал что-то новое с #own_methods, но для меня это тоже не существует. Тем не менее, я обычно хожу: ( "MyString" .methods - Object.merhods) .sort
oceanician
2
Очень похоже на патч, на который ссылается @fakeleft, и он есть в моем файле .irbrc. Я исправляю объект "Патч" и создаю #own_methds с помощью этого: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie
1
@Laser Методы для String, в частности, являются теми, которые определены в самом классе String. Методы, доступные в String, включают методы, определенные в его суперклассе (ах).
Фонд Моники иск
1
Используйте, String.public_instance_methods(false)чтобы найти все общедоступные методы экземпляра, специально определенные String.
3limin4t0r
39

Как упомянуто @endeR, если интернационализация является проблемой, гем unicode_utils более чем достаточен.

$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"

Манипуляции со строками в Ruby 2.4 теперь чувствительны к юникоду.

Нуреттин
источник
18

Метод ruby downcaseвозвращает строку с заглавными буквами, замененными строчными.

"string".downcase

https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase

Heat Miser
источник
конвертирование в ruby ​​здесь: techotopia.com/index.php/Ruby_String_Conversions
TStamper
2
Хотя технически это помогает ответить на вопрос, оно действительно должно быть более осветительным. Показать результат возможно? Может быть, ссылка на документацию?
Жестянщик
12

... и заглавные буквы:

"Awesome String".upcase
=> "AWESOME STRING"
mlambie
источник
12

Рельсы 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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
helder.vasc
источник
1

Вы можете найти струнный метод , как "strings".methods вы можете определить строку как upcase, downcase, titleize. Например,

"hii".downcase
"hii".titleize
"hii".upcase
Форам Такрал
источник
1

Метод .swapcase преобразует символы верхнего регистра в строку в нижний регистр и буквы нижнего регистра в верхний регистр.

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
Раджкумар Улаганадхан
источник
1
Спасибо! Это именно то, что я искал. Строка в смешанном регистре может сделать более очевидным, что именно делает этот метод ...'Testing'.swapcase #=> tESTING
Мэтью
0

Не подойдет для всех, но это сэкономило мне кучу времени. У меня просто была проблема с CSV, возвращающим «TRUE» или «FALSE», поэтому я просто добавил VALUE.to_s.downcase == «true», который будет возвращать логическое true, если значение «TRUE», и false, если значение «FALSE». ", но все равно будет работать для логического значения true и false.

Мейсон С.Б.
источник