Ruby on rails:用空间替换驼峰盒

nis*_*ish 14 ruby ruby-on-rails

我想骆驼的话转换喜欢camelCaseCAMEL CASE.我试过这里提到的方法.

@q = params[:promo].underscore.humanize.upcase
Run Code Online (Sandbox Code Playgroud)

但这给了我CAMELCASE而不是CAMEL CASE使用相同的结果:

@q = params[:promo].gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase
Run Code Online (Sandbox Code Playgroud)

编辑:网址包含/camelCase但使用params [:promo],骆驼案例不会被保留,而@q是camelcase

its*_*lay 23

»  'camelCase'.underscore.humanize.upcase
=> "CAMEL CASE"
Run Code Online (Sandbox Code Playgroud)


Eng*_*mon 7

如果有人需要像'CamelCase'这样的'Camel Case'可以使用

'CamelCase'.underscore.split('_').collect{|c| c.capitalize}.join(' ')
Run Code Online (Sandbox Code Playgroud)

或'CamelCase'到'驼峰案'

'CamelCase'.underscore.split('_').join(' ') 
Run Code Online (Sandbox Code Playgroud)

或者'CamelCase'到'Camel case'

'CamelCase'.underscore.humanize
Run Code Online (Sandbox Code Playgroud)

注意:此解决方案是特定于rails的,如果没有ActiveSupport,它在ruby中不起作用.

  • `'CamelCase'.underscore.titleize`也会返回"Camel Case" - 比你的建议容易得多 (4认同)

pet*_*ter 4

只需将大写字符替换为前面带有空格的字符,然后将所有内容变为大写

'camelCase'.gsub(/[A-Z]/, ' \0').upcase
Run Code Online (Sandbox Code Playgroud)