Swift仅将.uppercaseString应用于字符串的第一个字母

Som*_*Guy 222 string ios swift ios8-extension

我正在尝试创建一个自动更正系统,当用户键入带有大写字母的单词时,自动更正功能不起作用.为了解决这个问题,我制作了一个字符串类型的副本,应用了.lowercaseString,然后对它们进行了比较.如果字符串确实是错误的,它应该纠正这个词.然而,替换键入的单词的单词都是小写的.所以我需要将.uppercaseString仅应用于第一个字母.我原本以为我可以用

nameOfString[0]
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.如何将字符串的第一个字母设置为大写,然后能够打印第一个字母大写的完整字符串?

谢谢你的帮助!

Kir*_*ins 484

包括与API指南一致的变异和非变异版本.

斯威夫特3:

extension String {
    func capitalizingFirstLetter() -> String {
        let first = String(characters.prefix(1)).capitalized
        let other = String(characters.dropFirst())
        return first + other
    }

    mutating func capitalizeFirstLetter() {
        self = self.capitalizingFirstLetter()
    }
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

extension String {
    func capitalizingFirstLetter() -> String {
      return prefix(1).uppercased() + self.lowercased().dropFirst()
    }

    mutating func capitalizeFirstLetter() {
      self = self.capitalizingFirstLetter()
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 它只是`.capitalized`现在.另请注意`capitalizedStringWith(_ locale:)` (19认同)
  • 只是注意`.capitalizedString`不再适用于Xcode 7 Beta 4.字符串在Swift 2.0中有所改变. (3认同)
  • @LoryLory使用`.uppercaseString` (3认同)
  • @Kirsteins:你是对的,我的坏.我忘了导入`基金会'*羞怯的笑容* (2认同)
  • 这是非常有效的答案配对.使用Xcode 7.1.1/Swift 2.1 ....谢谢:) (2认同)

Leo*_*bus 130

Xcode 9•Swift 4

extension StringProtocol {
    var firstUppercased: String {
        return prefix(1).uppercased()  + dropFirst()
    }
    var firstCapitalized: String {
        return prefix(1).capitalized + dropFirst()
    }
}
Run Code Online (Sandbox Code Playgroud)
extension StringProtocol {
    var firstUppercased: String {
        return prefix(1).uppercased() + dropFirst()
    }
    var firstCapitalized: String {
        return String(prefix(1)).capitalized + dropFirst()
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不错的工作.我编辑我的首先传递小写并重命名为Proper. (3认同)

Mas*_*lko 82

Swift 3.0

为"你好世界"

nameOfString.capitalized
Run Code Online (Sandbox Code Playgroud)

或者为"你好世界"

nameOfString.uppercased
Run Code Online (Sandbox Code Playgroud)

  • 这将大写字符串的每个单词的第一个字符,而不仅仅是第一个单词. (8认同)
  • 两个月前Charlesism已经回答了Swift 3版本...... (3认同)

sam*_*m k 39

Swift 4.0

string.capitalized(with: nil)
Run Code Online (Sandbox Code Playgroud)

要么

string.capitalized
Run Code Online (Sandbox Code Playgroud)

然而,这大写每个单词的第一个字母

Apple的文档:

大写字符串是一个字符串,每个单词中的第一个字符更改为其对应的大写值,并且所有剩余字符都设置为其对应的小写值."单词"是由空格,制表符或行终止符分隔的任何字符序列.不考虑一些常用的分隔标点符号,因此该属性通常不会产生多字符串的期望结果.有关其他信息,请参阅getLineStart(_:end:contentsEnd:for :)方法.

  • 我不知道为什么人们不接受这个答案。如果人们只想将第一个单词大写,他们可以抓住第一个单词并使用大写的属性最容易地将其大写。 (2认同)
  • 重要的是,“大写”对于所有 Unicode 字符都是正确的,而对第一个字符使用“大写”则不然。 (2认同)

use*_*304 23

extension String {
    func firstCharacterUpperCase() -> String? {
        let lowercaseString = self.lowercaseString

        return lowercaseString.stringByReplacingCharactersInRange(lowercaseString.startIndex...lowercaseString.startIndex, withString: String(lowercaseString[lowercaseString.startIndex]).uppercaseString)
    }
}

let x = "heLLo"
let m = x.firstCharacterUpperCase()
Run Code Online (Sandbox Code Playgroud)


DUR*_*iya 14

对于.capitalized快速和全字使用的单词使用中的第一个字符.uppercased()


Phi*_*hil 10

Swift 2.0(单行):

String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst())
Run Code Online (Sandbox Code Playgroud)


osc*_*lon 6

斯威夫特 3 (xcode 8.3.3)

大写字符串的所有第一个字符

let str = "your string"
let capStr = str.capitalized

//Your String
Run Code Online (Sandbox Code Playgroud)

大写所有字符

let str = "your string"
let upStr = str.uppercased()

//YOUR STRING
Run Code Online (Sandbox Code Playgroud)

仅大写字符串的第一个字符

 var str = "your string"
 let capStr = String(str.characters.prefix(1)).uppercased() + String(str.characters.dropFirst())

//Your string
Run Code Online (Sandbox Code Playgroud)


小智 6

在迅捷 5

https://www.hackingwithswift.com/example-code/strings/how-to-capitalize-the-first-letter-of-a-string

extension String {
    func capitalizingFirstLetter() -> String {
        return prefix(1).capitalized + dropFirst()
    }

    mutating func capitalizeFirstLetter() {
        self = self.capitalizingFirstLetter()
    }
}
Run Code Online (Sandbox Code Playgroud)

与您的字符串一起使用

let test = "the rain in Spain"
print(test.capitalizingFirstLetter())
Run Code Online (Sandbox Code Playgroud)