Ответ 1
» 'camelCase'.underscore.humanize.upcase
=> "CAMEL CASE"
Я хочу преобразовать слова верблюда, например camelCase
, в CAMEL CASE
. Я пробовал упомянутый подход here.
@q = params[:promo].underscore.humanize.upcase
Но это дает мне camelCase
, а не CAMEL CASE
тот же результат при использовании:
@q = params[:promo].gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase
EDIT: url содержит /camelCase
, но при использовании параметров [: promo] случай верблюда не сохраняется, а @q - camelCase
» 'camelCase'.underscore.humanize.upcase
=> "CAMEL CASE"
Если кому-то понадобится что-то вроде "CamelCase" в "Camel Case", вы можете использовать
'CamelCase'.underscore.split('_').collect{|c| c.capitalize}.join(' ')
Или "CamelCase" в "случай верблюда"
'CamelCase'.underscore.split('_').join(' ')
Или "CamelCase" в "Случай верблюда"
'CamelCase'.underscore.humanize
N.B: Это решение специфично для рельсов, оно не работает в рубине без ActiveSupport.
Просто замените свой верхний символ буквой на себя, предварительно добавив пробел, а затем сделайте все заглавные
'camelCase'.gsub(/[A-Z]/, ' \0').upcase
'camelCase'.split(/(?=[A-Z])/).join(' ').upcase