Loh*_* MV 162 ruby string ruby-on-rails
我正在尝试将名称从蛇案转换为骆驼案.有内置方法吗?
例如:"app_user"
到"AppUser"
(我有一个字符串,"app_user"
我想将其转换为模型AppUser
).
Ser*_*sev 234
如果你正在使用Rails,String#camelize就是你要找的东西.
"active_record".camelize # => "ActiveRecord"
"active_record".camelize(:lower) # => "activeRecord"
Run Code Online (Sandbox Code Playgroud)
如果你想获得一个实际的类,你应该使用String#constantize.
"app_user".camelize.constantize
Run Code Online (Sandbox Code Playgroud)
小智 114
这个怎么样?
"hello_world".split('_').collect(&:capitalize).join #=> "HelloWorld"
Run Code Online (Sandbox Code Playgroud)
在这里的评论中找到: 分类Ruby字符串
Har*_*tty 40
使用classify
.它很好地处理边缘情况.
"app_user".classify # => AppUser
"user_links".classify # => UserLink
Run Code Online (Sandbox Code Playgroud)
注意:
这个答案特定于问题中给出的描述(它不是特定于问题标题).如果有人试图将字符串转换为驼峰,他们应该使用塞尔吉奥的答案.提问者说他想转换app_user
成AppUser
(不App_user
),因此这个答案..
Mr.*_*ack 23
资料来源:http://rubydoc.info/gems/extlib/0.9.15/String#camel_case-instance_method
出于学习目的:
class String
def camel_case
return self if self !~ /_/ && self =~ /[A-Z]+.*/
split('_').map{|e| e.capitalize}.join
end
end
"foo_bar".camel_case #=> "FooBar"
Run Code Online (Sandbox Code Playgroud)
对于lowerCase变体:
class String
def camel_case_lower
self.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
end
end
"foo_bar".camel_case_lower #=> "fooBar"
Run Code Online (Sandbox Code Playgroud)
Uly*_* BN 16
我采用了纯粹的红宝石代码来实现它的每一种可能性,这里它们是:
大写和gsub
"app_user".capitalize.gsub(/_(\w)/){$1.upcase}
Run Code Online (Sandbox Code Playgroud)使用&
速记分割和地图(感谢user3869936的回答)
"app_user".split('_').map(&:capitalize).join
Run Code Online (Sandbox Code Playgroud)分裂和地图(感谢布莱克先生的回答)
"app_user".split('_').map{|e| e.capitalize}.join
Run Code Online (Sandbox Code Playgroud)以下是所有这些基准测试,我们可以看到gsub对此非常不利.我用了126 080个单词.
user system total real
capitalize and gsub : 0.360000 0.000000 0.360000 ( 0.357472)
split and map, with &: 0.190000 0.000000 0.190000 ( 0.189493)
split and map : 0.170000 0.000000 0.170000 ( 0.171859)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
86010 次 |
最近记录: |