首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby regexp将snake_casing转换为PascalCasing?

Ruby regexp将snake_casing转换为PascalCasing?
EN

Stack Overflow用户
提问于 2012-05-21 05:54:28
回答 4查看 275关注 0票数 3

我已经创建了一个web框架,它使用以下函数:

代码语言:javascript
复制
def to_class(text)
    text.capitalize
    text.gsub(/(_|-)/, '')
end

snake_casedhyphen-cased目录名称转换为项目的PascalCased类名。

问题是,该函数只删除了_-,并且没有大写下一个字母。使用.capitalize.upcase,有没有一种方法可以将您的snake/hyphen_/-cased名称转换为正确的PascalCased类名称?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-21 06:15:32

这会将以_为大小写的字符串拆分为一个数组;将每个成员大写,并将该数组重新粘合到一个字符串中:

代码语言:javascript
复制
def to_pascal_case(str)
  str.split(/-|_/).map(&:capitalize).join
end

p to_pascal_case("snake_cased") #=>"SnakeCased"

由于以下几个原因,您的代码不能工作:

capitalize方法的结果对象被丢弃-您应该执行类似text.capitalize!

  • text.capitalize!这样的操作。capitalize方法只upcase字符串的第一个字母,而不是每个单词的第一个字母。
票数 4
EN

Stack Overflow用户

发布于 2012-05-21 06:11:04

代码语言:javascript
复制
gsub(/(?:^|[_-])([a-z])?/) { $1.upcase unless $1.nil? }
票数 5
EN

Stack Overflow用户

发布于 2012-05-21 06:05:36

Rails有一个类似的方法,叫做camelize。它基本上大写了字符串中包含[a-z0-9]的每一部分,并删除了所有其他部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10677546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档