鉴于字符串" Lorem IPSUM dolor Sit amet"。大写字母在" Lorem"和" Sit"应该保留,大写的像" IPSUM"应转换为" Ipsum"
如何制作" Lorem Ipsum dolor Sit amet"从使用gsub的给定字符串?
不工作的例子:s.gsub(/[[:upper:]]/){$&.downcase}
答案 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
之类的单词已经没事了。)