【问题标题】:How to capitalize each word in a string using Swift iOS如何使用 Swift iOS 将字符串中的每个单词大写
【发布时间】:2015-03-25 16:28:14
【问题描述】:

是否有将字符串中的每个单词大写的功能还是手动过程?

例如“鲍勃很高” 我想要“鲍勃很高”

肯定有一些东西,但我发现的 Swift IOS 答案似乎都没有涵盖这一点。

【问题讨论】:

  • var someString = "lol" ; someString.capitalized // “哈哈”
  • 其他一些人在下面详细介绍了此选项。 ;)

标签: ios swift


【解决方案1】:

你在找capitalizedString

讨论
将每个单词中第一个字符的字符串更改为其对应的大写值,并将所有剩余字符设置为其对应的小写值。

和/或capitalizedStringWithLocale(_:)

使用指定的语言环境返回接收者的大写表示。

对于呈现给用户的字符串,传递当前语言环境 ([NSLocale currentLocale])。要使用系统语言环境,请传递 nil。

【讨论】:

  • 我没有尝试过 capitalizedStringWithLocale,所以我会玩它并在几分钟后回复。
  • 谢谢。事实证明,Apple 文档上的 swift 示例输入错误,这让我陷入了一个循环(形象地)。
【解决方案2】:

斯威夫特 3:

var lowercased = "hello there"

var stringCapitalized = lowercased.capitalized
//prints:  "Hello There"

【讨论】:

    【解决方案3】:

    从 iOS 9 开始提供本地化大写功能,因为大写字母可能因语言而异。

    if #available(iOS 9.0, *) {
      "istanbul".localizedCapitalizedString
      // In Turkish: "İstanbul"
    }
    

    【讨论】:

    • 对于 Swift,它是 localizedCapitalized,对于 ObjC,它是 localizedCapitalizedString
    【解决方案4】:

    上面提供的答案示例。

       var sentenceToCap = "this is a sentence."
    println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale())  )
    

    最终结果是一个字符串“This Is A Sentence”

    【讨论】:

      【解决方案5】:

      对于 Swift 3,它已更改为 capitalized

      讨论
      此属性执行规范(非本地化)映射。它适用于需要稳定结果而不依赖于当前语言环境的编程操作。 大写字符串是将每个单词中的第一个字符更改为其相应的大写值,并将所有其余字符设置为其相应的小写值的字符串。 “单词”是由空格、制表符或行终止符分隔的任何字符序列(列在 getLineStart(_:end:contentsEnd:for:) 下)。不考虑一些常见的单词分隔标点符号,因此此属性通常可能不会为多字字符串产生所需的结果。 不保证大小写转换是对称的或生成与原始字符串长度相同的字符串。请参阅小写的示例。

      【讨论】:

        【解决方案6】:

        有一个内置函数

        nameOfString.capitalizedString
        

        这将大写字符串的每个单词。仅大写您可以使用的第一个字母:

        nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString)
        

        Older Thread

        【讨论】:

        • 我试过了,但它对我不起作用。它似乎只限制了第一个单词。我找到了推荐这个的帖子。
        【解决方案7】:

        Swift 5 版本的Christopher Wade's answer

        let str = "my string"
        
        str.capitalized(with: NSLocale.current)
        
        print(str) // prints My String
        

        【讨论】:

          【解决方案8】:

          这是我想出的似乎可行的方法,但我愿意接受任何更好的方法。

              func firstCharacterUpperCase(sentenceToCap:String) -> String {
          
              //break it into an array by delimiting the sentence using a space
              var breakupSentence = sentenceToCap.componentsSeparatedByString(" ")
              var newSentence = ""
          
              //Loop the array and concatinate the capitalized word into a variable.
              for wordInSentence  in breakupSentence {
                  newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
              }
          
              // send it back up.
              return newSentence
          }
          

          或者如果我想将其用作字符串类的扩展。

          extension String {
          var capitalizeEachWord:String {
              //break it into an array by delimiting the sentence using a space
              var breakupSentence = self.componentsSeparatedByString(" ")
              var newSentence = ""
          
              //Loop the array and concatinate the capitalized word into a variable.
              for wordInSentence  in breakupSentence {
                  newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
              }
          
              // send it back up.
              return newSentence
          }
          }
          

          再次,欢迎任何更好的东西。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-16
            • 2010-12-25
            • 1970-01-01
            • 2014-05-19
            • 2010-12-05
            相关资源
            最近更新 更多