Ruby regexp将snake_外壳转换为PascalCasing?
我创建了一个使用以下功能的web框架:Ruby regexp将snake_外壳转换为PascalCasing?,ruby,regex,pascalcasing,Ruby,Regex,Pascalcasing,我创建了一个使用以下功能的web框架: def to_class(text) text.capitalize text.gsub(/(_|-)/, '') end 将项目的snake\u cased或hyphen cased目录名转换为PascalCased类名 问题是,该函数只删除了\uu和-,并且没有将下一个字母大写。使用.capitalize或.upcase,有没有一种方法可以实现将您的snake/hyphen\uu/-cased名称转换为正确的PascalCased类名
def to_class(text)
text.capitalize
text.gsub(/(_|-)/, '')
end
将项目的snake\u cased
或hyphen cased
目录名转换为PascalCased
类名
问题是,该函数只删除了
\uu
和-
,并且没有将下一个字母大写。使用.capitalize
或.upcase
,有没有一种方法可以实现将您的snake/hyphen\uu/-cased
名称转换为正确的PascalCased
类名?您可能可以将其简化为更小的名称,但是:
txt = 'foo-bar_baz'
txt.gsub(/(?:^|[-_])([a-z])/) { |m| m.upcase }.gsub(/[-_]/, '') # FooBarBaz
Rails有一个类似的方法,名为。它基本上将由
[a-z0-9]
组成的字符串的每个部分大写,并删除所有其他内容 这将大小写字符串拆分为一个数组;将每个成员大写,并将数组粘回字符串:
gsub(/(?:^|[_-])([a-z])?/) { $1.upcase unless $1.nil? }
def to_pascal_case(str)
str.split(/-|_/).map(&:capitalize).join
end
p to_pascal_case("snake_cased") #=>"SnakeCased"
由于以下几个原因,您的代码无法工作:
- 大写方法的结果对象将被丢弃-您
应该执行类似于
text.capitalize的操作代码>或
文本=文本。大写
- 但是
方法只是capitalize
s字符串的第一个字母, 不是每个单词的第一个字母upcase