Ruby on Rails: Преобразование "SomeWordHere" в "какое-то слово здесь"
Я знаю, что вы можете сделать что-то вроде:
"SomeWordHere".underscore.gsub("_", " ")
чтобы получить "какое-то слово здесь".
Я думал, что это может быть слишком много для чего-то такого простого. Есть ли более эффективный способ (возможно, встроенный метод?) Для преобразования "SomeWordHere" в "какое-то слово здесь"?
Ответы
Ответ 1
![alt text]()
Методы подчеркивание и гуманизация предназначены для конверсий между таблицами, именами классов/пакетов и т.д. Вам лучше использовать свой собственный код для замены, чтобы избежать сюрпризы. См. Комментарии.
"SomeWordHere".underscore => "some_word_here"
"SomeWordHere".underscore.humanize => "Some word here"
"SomeWordHere".underscore.humanize.downcase => "some word here"
Ответ 2
Я думаю, что это более простое решение:
"SomeWordHere".titleize.downcase
Ответ 3
Вы можете использовать регулярное выражение:
puts "SomeWordHere".gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase
Вывод:
some word here
Одна из причин, по которой вы, возможно, предпочтете это, - это то, что ваш вход может содержать тире или символы подчеркивания, и вы не хотите заменять их пробелами:
puts "Foo-BarBaz".underscore.gsub('_', ' ')
puts "Foo-BarBaz".gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase
Вывод:
foo bar baz
foo-bar baz
Ответ 4
Нет, нет встроенного метода, о котором я знаю. Какой-нибудь более эффективный, чем однострочный? Не думайте так. Может быть, humanize
вместо gsub
, но вы не получите точно такой же результат.