Rails 如何将小写下划线的字符串转换成首字母大写的格式?

jarorwar · 2013年09月02日 · 最后由 jarorwar 回复于 2013年09月04日 · 7972 次阅读

原字符串:start_menu_icon_cls 处理后字符串:startMenuIconCls

因为没有找到捷径,先说本人的方法。先把原字符串分割成数组,再将从 [1] 到 [-1] 的数组 首字母大写,,最后 Join 起来。

不知道有木有更好的方法,

为什么要这么做的原因是 rails model 的字段名和 extjs 的约定写法不一样~!

求高手给一个 更牛的 方法

用 Rails 的话:

irb> "start_menu_icon_cls".camelize(:lower)
=> "startMenuIconCls"

http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-camelize

#1 楼 @huacnlee 哦。。谢谢了。我没看 rails 的 api,罪过。。看的是 ruby 的,发现最牛的好像只能用正则把?但是没写出来正则~!

#2 楼 @jarorwar 那个地址的介绍下面有源代码的

#2 楼 @jarorwar 你的头像能不能换个正经一点的,看着好难受...

#2 楼 @jarorwar 我一般会在纯 ruby 项目中引入 active support 库

"start_menu_icon_cls".camelize(:lower)

#4 楼 @huacnlee 头像已经换了。其实我的 email 跟 gravatar 的一样,不知为啥没有带过来。现在重新上传了一个

#3 楼 @huacnlee 在看了。谢谢。我的头像彻底木有了。。

[2] pry(main)> "student_infos".singularize => "student_info" [3] pry(main)> "student_infos".singularize.camelize => "StudentInfo" [4] pry(main)> "student_infos".singularize.camelize.constantize => StudentInfo

"ac_bd_ce".gsub(/\_./){ |match| match[1].upcase }

"ac_bd_ce".gsub(/^.|_./){ |match| match.size>1?match[1].upcase : match.upcase }

非 rails 这么写,行么?

一直用camelcase 现在知道他们是好基友了 Alias for String#camelize

"start_menu_icon_cls".camelcase
#=> "StartMenuIconCls"

"start_menu_icon_cls".camelize(:lower)
#=> "startMenuIconCls"
需要 登录 后方可回复, 如果你还没有账号请 注册新账号