Ruby正则表达式转换大写单词并保留标题化单词

时间:2017-03-22 10:40:15

标签: ruby-on-rails ruby regex gsub

鉴于字符串" Lorem IPSUM dolor Sit amet"。大写字母在" Lorem"和" Sit"应该保留,大写的像" IPSUM"应转换为" Ipsum"

如何制作" Lorem Ipsum dolor Sit amet"从使用gsub的给定字符串? 不工作的例子:s.gsub(/[[:upper:]]/){$&.downcase}

1 个答案:

答案 0 :(得分:1)

您可以将capitalize/\b[[:upper:]]{2,}\b/正则表达式一起使用:

s.gsub(/\b[[:upper:]]{2,}\b/){$&.capitalize}
# => Lorem Ipsum dolor Sit amet

请参阅online Ruby demo

请注意,\b[[:upper:]]{2,}\b模式将匹配整个单词(因为\b是单词边界),只包含2个或更多大写字母(似乎不需要匹配I之类的单词已经没事了。)