如何使用Swift大写句子的第一个字符
我有一个包含句子的字符串描述,只想大写第一个字母。我尝试了不同的方法,但大多数方法都会给我例外和错误。我使用的是Xcode 6 以下是我迄今为止所做的尝试:如何使用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
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.实际上是字母的第一个字符应大写。”