【问题标题】:Ruby regex to convert uppercased words and keep titleized onesRuby正则表达式转换大写单词并保留标题
【发布时间】:2017-03-22 10:40:15
【问题描述】:

给定字符串“Lorem IPSUM dolor Sit amet”。 “Lorem”和“Sit”中的大写字母应保留,“IPSUM”等大写字母应转换为“Ipsum”

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

【问题讨论】:

    标签: ruby-on-rails ruby regex gsub


    【解决方案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 模式将匹配仅包含 2 个或更多大写字母的整个单词(因为 \b 是单词边界)(似乎不需要匹配已经可以的 I 之类的单词)。

    【讨论】:

    • 顺便说一句,也可以使用 \b[[:upper:]]{2,}\b 匹配具有 2 个或更多大写字母的单词,因为 I 已经可以了。我更新了答案。
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    相关资源
    最近更新 更多