Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Swift大写句子的第一个字符_Swift_Capitalization - Fatal编程技术网

如何使用Swift大写句子的第一个字符

如何使用Swift大写句子的第一个字符,swift,capitalization,Swift,Capitalization,我有一个包含句子的字符串描述,只想大写第一个字母。我尝试了不同的方法,但大多数方法都会给我例外和错误。我使用的是Xcode 6 以下是我迄今为止所做的尝试: let cap = [description.substringToIndex(advance(0,1))] as String description = cap.uppercaseString + description.substringFromIndex(1) 它给了我: Type 'String.Index' does

我有一个包含句子的字符串描述,只想大写第一个字母。我尝试了不同的方法,但大多数方法都会给我例外和错误。我使用的是Xcode 6

以下是我迄今为止所做的尝试:

let cap = [description.substringToIndex(advance(0,1))] as String
    description = cap.uppercaseString + description.substringFromIndex(1)
它给了我:

Type 'String.Index' does not conform to protocol 'IntegerLiteralConvertible'
我试过:

 func capitalizedStringWithLocale(locale:0) -> String
但我还没弄明白怎么做进口基础
import Foundation

// A lowercase string
let description = "the quick brown fox jumps over the lazy dog."

// The start index is the first letter
let first = description.startIndex

// The rest of the string goes from the position after the first letter
// to the end.
let rest = advance(first,1)..<description.endIndex

// Glue these two ranges together, with the first uppercased, and you'll
// get the result you want. Note that I'm using description[first...first]
// to get the first letter because I want a String, not a Character, which
// is what you'd get with description[first].
let capitalised = description[first...first].uppercaseString + description[rest]

// Result: "The quick brown fox jumps over the lazy dog."
//小写字符串 让description=“敏捷的棕色狐狸跳过懒惰的狗。” //起始索引是第一个字母 let first=description.startIndex //字符串的其余部分从第一个字母后面的位置开始 //到最后。
让休息=前进(第一,1)…在Swift 2中,您可以

String(text.characters.first!).capitalizedString + String(text.characters.dropFirst())

Swift 3中的另一种可能性:

extension String {
    func capitalizeFirst() -> String {
        let firstIndex = self.index(startIndex, offsetBy: 1)
        return self.substring(to: firstIndex).capitalized + self.substring(from: firstIndex).lowercased()
    }
}
对于Swift 4:

来自以上Swift 3代码的警告:

 'substring(to:)' is deprecated: Please use String slicing subscript
 with a 'partial range upto' operator.   
'substring(from:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator.  
Swift 4解决方案:

extension String {
    var capitalizedFirst: String {
        guard !isEmpty else {
            return self
        }

        let capitalizedFirstLetter  = charAt(i: 0).uppercased()
        let secondIndex             = index(after: startIndex)
        let remainingString         = self[secondIndex..<endIndex]

        let capitalizedString       = "\(capitalizedFirstLetter)\(remainingString)"
        return capitalizedString
    }
}
扩展字符串{
var capitalizedFirst:字符串{
守卫!我还有别的吗{
回归自我
}
让大写的Dfirstletter=charAt(i:0).uppercased()
让secondIndex=索引(在:startIndex之后)

让remainingString=self[secondIndex..以下是如何在Swift 4中执行此操作;以防它对任何人都有帮助:

extension String {
    func captalizeFirstCharacter() -> String {
        var result = self

        let substr1 = String(self[startIndex]).uppercased()
        result.replaceSubrange(...startIndex, with: substr1)

        return result
    }
}
它不会改变原始的
字符串

extension String {
    var capitalizedFirstLetter:String {
          let string = self
          return string.replacingCharacters(in: startIndex...startIndex, with: String(self[startIndex]).capitalized)
    }
}
答复:

let newSentence = sentence.capitalizedFirstLetter

对于字符串中的一个或每个单词,可以使用字符串的.capitalized属性

print("foo".capitalized) //prints: Foo

print("foo foo foo".capitalized) //prints: Foo Foo Foo

Swift 4.0最简单的解决方案

添加为计算属性扩展名:

extension String {
    var firstCapitalized: String {
        var components = self.components(separatedBy: " ")
        guard let first = components.first else {
            return self
        }
        components[0] = first.capitalized
        return components.joined(separator: " ")
    }
}
用法:

"hello world".firstCapitalized
Swift 4.2版本:

extension String {

    var firstCharCapitalized: String {
        switch count {
        case 0:
            return self
        case 1:
            return uppercased()
        default:
            return self[startIndex].uppercased() + self[index(after: startIndex)...]
        }
    }
}
Swift 5.0

答复1:

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

    mutating func capitalizeFirstLetter() {
        self = self.capitalizingFirstLetter()
    }
 }
答复2:

 extension String {
       func capitalizeFirstLetter() -> String {
            return self.prefix(1).capitalized + dropFirst()
       }
  }
答复3:

 extension String {
       var capitalizeFirstLetter:String {
            return self.prefix(1).capitalized + dropFirst()
       }
  }

此外,如果您想要一个真正只有首字母大写的字符串,如“John”或“Doe”,而不是“John”和“Doe”,您可以执行以下操作:
string(text.characters.first!).capitalizedString+string(text.characters.dropFirst()).lowercased()
如何修改它以正确处理字符串“10.实际上是字母的第一个字符应大写。”