标题很好地总结了我的难题。我已经在网上搜索了一段时间,并且作为一个整体重新使用Ruby和正则表达式,我一直试图弄清楚如何使用RegEx&改变单个字符串的大小写#34;过滤器"例如[A-Z]([a-z]*)\b
。
基本上我希望流程
input: woRD
filter: [A-Z]([a-z]*)\b
output: Word
我已将单词过滤到列表中,因此我不需要匹配单词;我只需要使用RegEx过滤器来过滤单词的大小写。
我不想使用标准大写方法,我希望使用正则表达式来完成。
答案 0 :(得分:1)
您可以使用
"woRD".downcase.capitalize
Ruby为这些类型的功能提供了一些预定义的方法。尝试使用它们而不是正则表达式。这节省了编码时间!
答案 1 :(得分:1)
好吧,出于某种原因你想使用正则表达式。你走了:
# prepare hashes for gsub
to_down = (to_upper = Hash[('a'..'z').zip('A'..'Z')]).invert
# convert to downcase
downcased = 'woRD'.gsub(/[A-Z]/, to_down)
# ⇛ 'word'
titlecased = downcased.gsub(/^\w/, to_upper)
# ⇒ 'Word'
希望它有所帮助。请注意String#gsub(re, hash)
方法的用法。
答案 2 :(得分:0)
您无法根据需要使用Regex进行此类更改。 请仔细阅读以下主题:How to change case of letters in string using regex in Ruby。
解决问题的最佳方法是使用:
"woRD".downcase.capitalize
或
name_of_your_variable.downcase!.capitalize!
如果要永久更改变量中的字符串而不需要将其分配给其他变量。