Як взяти рядок і перетворити його в нижній чи верхній регістр у 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
з Рейлів. Неможливо знайти його в рубіновій String
документації
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 тепер чутливі до коду.
Метод рубіну 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 ", але все одно буде працювати для булевих істинних та хибних.