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

1025

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

Теги:
string
uppercase
lowercase

20 ответов

1546
Лучший ответ

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
    Я подумала об этом только после того, как ответила, но я все равно дам вам должное за то, что вы нашли время ответить на это. Спасибо!
  • 3
    Осторожно! выглядит как использование взрыва "!" вернет ноль, если нет заглавной буквы. так что str = "this" .downcase! возвращает str = ноль
Показать ещё 9 комментариев
111

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

"MyString".methods.sort

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

"MyString".own_methods.sort

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

  • 11
    Единственная проблема с этим ответом состоит в том, что #own_methods, кажется, не существует. Это из расширения Irb?
  • 12
    Привет - я думал, что тогда узнал что-то новое с #own_methods, но для меня это тоже не существует. Тем не менее, я обычно иду: ("MyString" .methods - Object.merhods) .sort
Показать ещё 7 комментариев
39

http://www.ruby-doc.org/core/classes/String.html

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

Обычно я просто добавляю "Ruby, Class, Datatype" в Google, и соответствующий rubydoc всплывает

Это очень удобно.

38

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

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

Обработка строк в Ruby 2.4 теперь чувствительна к юникоду.

23

Узнайте методы "случая":

$ irb
> "MyString".methods.grep(/case/)
 => [:casecmp, :upcase, :downcase, :swapcase, :upcase!, :downcase!, :swapcase!]
16

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

"string".downcase

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

  • 1
    Я нашел ответ, но это заняло у меня слишком много времени, лучше здесь ...
  • 0
    рубиновые преобразования здесь: techotopia.com/index.php/Ruby_String_Conversions
Показать ещё 1 комментарий
12

... и верхний регистр:

"Awesome String".upcase
=> "AWESOME STRING"
11

Драйвер Active Rails обеспечивает 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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
7

И если вы хотите просто загладить первую букву строки в капитал, а остальные - в нижнем регистре.

"awesome string".capitalize
=> "Awesome string"

Он касается только касательно вопроса, но может быть полезным для людей, которые спотыкаются на него.

3
[4] pry(main)> "string".upcase
=> "STRING"
[5] pry(main)> "STRING".downcase
=> "string"
[6] pry(main)> "string".capitalize
=> "String"
3
s.downcase  # return a new String
s.downcase! # modify s in place
s.upcase    # (and...
s.upcase!   # ...of course)

Ссылка на документы: http://ruby-doc.org/core/String.html

Также см. # capitalize и форму !.

3

Чтобы преобразовать предложение или строку слов в "Капитал Кейс", более прямолинейно:

s.gsub(/\w+/) { |w| w.capitalize}
2

Верхний регистр:

"MyString".upcase

Строчная:

"MyString".downcase

Для капитала первой буквы используется только значение:

"MyString".capitalize
2

Простой,

"string".downcase # to lowercase
"string".upcase # to uppercase

Здесь вы можете прочитать ruby-doc: http://ruby-doc.org/core-2.2.3/String.html#method-i-upcase

1

Строка строк Rubys предлагает несколько методов для изменения случая строки.

Upcase Upcase используется для заглавной буквы каждой буквы строки.

"pawan".upcase

returns: PAWAN

Downcase Вниз используется каждая буква в строчной строке.

"PAWAN".downcase

returns: pawan

заглавной Другой метод в классе строк - это заглавная. Этот метод заглаживает первую букву строки при уменьшении оставшихся букв.

"pAWAN".capitalize

returns: Pawan

Titleize Titleize заглаживает каждое слово в строке. Помните, что вы можете использовать это только в том случае, если вы работаете в рамках Rails (или просто в стиле ActiveSupport).

name = "pawan Yadav"
name.titleize

returns: Pawan Yadav

Ссылка http://lesseverything.com/blog/how-to-convert-a-string-to-upper-or-lower-case-in-ruby/#

1

Вы можете использовать приведенный ниже строковый метод в Ruby

my_name = "Vivek Panday";

puts my_name.capitalize;

puts my_name.upcase;

puts my_name.downcase;

puts my_name.reverse;
0

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

"hii".downcase
"hii".titleize
"hii".upcase
0

Так как Ruby 2.4 существует встроенное полное отображение кода Unicode. Источник: https://stackoverflow.com/questions/1910573/ruby-1-9-how-can-i-properly-upcase-downcase-multibyte-strings. Более подробную информацию см. В документации к Ruby 2.4.0: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase

0

Вы можете использовать метод строки Ruby

Для вставки

Верхний регистр используется для заглавной буквы каждой буквы строки.

"something".upcase

возвращает: НЕЧТО

Для нижнего диапазона

Внизу используется каждая буква в строчной строке.

"SOMETHING".downcase

возвращает: что-то

-2

Этот метод принимает строку строчных букв и создает новую строку, которая заглавная буква первой буквы каждого слова.

def capitalize_words(string)
  words = string.split(" ")

  idx = 0
  while idx < words.length
    word = words[idx]

    word[0] = word[0].upcase

    idx += 1
  end

  return words.join(" ")
end

Ещё вопросы

Сообщество Overcoder
Наверх
Меню