【问题标题】:How to convert a string to lower or upper case in Ruby如何在Ruby中将字符串转换为小写或大写
【发布时间】:2010-11-04 11:15:05
【问题描述】:

如何在 Ruby 中获取字符串并将其转换为小写或大写?

【问题讨论】:

    标签: ruby string uppercase lowercase


    【解决方案1】:

    Ruby 有一些方法可以改变字符串的大小写。要转换为小写,请使用downcase

    "hello James!".downcase    #=> "hello james!"
    

    类似地,upcase 将每个字母大写,capitalize 将字符串的第一个字母大写,其余字母小写:

    "hello James!".upcase      #=> "HELLO JAMES!"
    "hello James!".capitalize  #=> "Hello james!"
    "hello James!".titleize    #=> "Hello James!" (Rails/ActiveSupport only)
    

    如果你想就地修改字符串,你可以在这些方法中添加一个感叹号:

    string = "hello James!"
    string.downcase!
    string   #=> "hello james!"
    

    有关详细信息,请参阅documentation for String

    【讨论】:

    • 我只是在回答后才想到它,但无论如何我都会给你花时间回答它的信任。谢谢!
    • 当心!在我看来像使用爆炸“!”如果没有大写字母,将返回 nil。所以 str = "this".downcase!返回 str = nil
    • 通常,“爆炸方法”返回nil;如果你想改变一个对象,你应该使用它们,而不是如果你想将值存储在另一个变量中。
    • .titleize 来自 Rails。在 ruby​​ String 文档中找不到它
    • titleize 需要从此答案中删除,或者至少声明它是 Rails 方法。
    【解决方案2】:

    结合try方法,支持nil值:

    'string'.try(:upcase)
    'string'.try(:capitalize)
    'string'.try(:titleize)
    

    【讨论】:

      【解决方案3】:

      不会对每个人都有效,但这只是为我节省了很多时间。我刚刚遇到了 CSV 返回“TRUE 或“FALSE”的问题,所以我只是添加了 VALUE.to_s.downcase == “true”,如果值为“TRUE”,则返回布尔值 true,如果值为“FALSE”,则返回 false ",但仍适用于布尔值 true 和 false。

      【讨论】:

        【解决方案4】:

        .swapcase 方法将字符串中的大写字母转换为小写,将小写字母转换为大写。

        'TESTING'.swapcase #=> testing
        'testing'.swapcase #=> TESTING
        

        【讨论】:

        • 谢谢!这正是我一直在寻找的。混合大小写的字符串可能会使这个方法的作用更加明显......'Testing'.swapcase #=> tESTING
        【解决方案5】:

        你可以找到像"strings".methods这样的字符串方法 您可以将字符串定义为upcasedowncasetitleize。 例如,

        "hii".downcase
        "hii".titleize
        "hii".upcase
        

        【讨论】:

          【解决方案6】:

          ruby downcase 方法返回一个字符串,其大写字母替换为小写字母。

          "string".downcase
          

          https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase

          【讨论】:

          【解决方案7】:

          【讨论】:

            【解决方案8】:

            就像@endeR 提到的那样,如果国际化是一个问题,那么 unicode_utils gem 就足够了。

            $ gem install unicode_utils
            $ irb
            > require 'unicode_utils'
            => true
            > UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
            => "fen bilimleri"
            

            Ruby 2.4 中的字符串操作现在对 unicode 敏感。

            【讨论】:

              【解决方案9】:

              Rails Active Support gem 提供了upcasedowncaseswapcasecapitalize 等具有国际化支持的方法:

              gem install activesupport
              irb -ractive_support/core_ext/string
              "STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
               => "string  áâãàçéêíóôõú"
              "string  áâãàçéêíóôõú".mb_chars.upcase.to_s
              => "STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ"
              

              【讨论】:

                【解决方案10】:

                您可以通过打开 irb 并运行来找出 String 上所有可用的方法:

                "MyString".methods.sort
                

                特别是可用于字符串的方法列表:

                "MyString".own_methods.sort
                

                我用它来发现关于我可能不知道存在的对象的新的和有趣的事情。

                【讨论】:

                • 这个答案的唯一问题是#own_methods 似乎不存在。它来自 Irb 扩展吗?
                • 嗨 - 我以为我正在使用#own_methods 学习一些新东西,但它对我来说也不存在。不过,我通常会去:("MyString".methods - Object.merhods).sort
                • 与@fakeleft 引用的补丁非常相似,我的 .irbrc 文件中有它。我猴子修补对象并用这个创建#own_methds:(obj.methods - obj.class.superclass.instance_methods).sort
                • @Laser 特别是 String 的方法是在 String 类本身中定义的方法。 String 上可用的方法包括在其超类中定义的方法。
                • 使用String.public_instance_methods(false)查找String明确定义的所有公共实例方法。
                【解决方案11】:

                ...大写是:

                "Awesome String".upcase
                => "AWESOME STRING"
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-05-18
                  • 2016-01-22
                  • 2018-09-07
                  • 2021-06-11
                  • 1970-01-01
                  • 2010-10-09
                  • 2014-06-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多