我正在尝试制作一个自动更正系统,当用户输入一个大写字母的单词时,自动更正不起作用。为了解决这个问题,我复制了键入的字符串,应用了. lowercasestring,然后比较它们。如果字符串确实输入错误,则应该更正单词。然而,取而代之的单词都是小写的。所以我需要对第一个字母应用. uppercasestring。我本来觉得我可以用
nameOfString[0]
但这显然行不通。我怎么能得到字符串的第一个字母大写,然后能够打印完整的字符串与第一个字母大写?
谢谢你的帮助!
我正在尝试制作一个自动更正系统,当用户输入一个大写字母的单词时,自动更正不起作用。为了解决这个问题,我复制了键入的字符串,应用了. lowercasestring,然后比较它们。如果字符串确实输入错误,则应该更正单词。然而,取而代之的单词都是小写的。所以我需要对第一个字母应用. uppercasestring。我本来觉得我可以用
nameOfString[0]
但这显然行不通。我怎么能得到字符串的第一个字母大写,然后能够打印完整的字符串与第一个字母大写?
谢谢你的帮助!
当前回答
字符串中的第一个字符大写
extension String {
var capitalizeFirst: String {
if self.characters.count == 0 {
return self
return String(self[self.startIndex]).capitalized + String(self.characters.dropFirst())
}
}
其他回答
如果你想大写字符串的每个字,你可以使用这个扩展
Swift 4 Xcode 9.2
extension String {
var wordUppercased: String {
var aryOfWord = self.split(separator: " ")
aryOfWord = aryOfWord.map({String($0.first!).uppercased() + $0.dropFirst()})
return aryOfWord.joined(separator: " ")
}
}
Used
print("simple text example".wordUppercased) //output:: "Simple Text Example"
我的解决方案:
func firstCharacterUppercaseString(string: String) -> String {
var str = string as NSString
let firstUppercaseCharacter = str.substringToIndex(1).uppercaseString
let firstUppercaseCharacterString = str.stringByReplacingCharactersInRange(NSMakeRange(0, 1), withString: firstUppercaseCharacter)
return firstUppercaseCharacterString
}
我用柯尔斯泰因斯解得到了第一个复制的字符。这将大写第一个字符,不会看到双字符:
var s: String = "hello world"
s = prefix(s, 1).capitalizedString + suffix(s, countElements(s) - 1)
我不知道它的效率是高还是低,我只知道它给了我想要的结果。
编辑:这不再适用于文本,现在只支持输入字段。
以防有人以同样的问题结束这里关于SwiftUI:
// Mystring is here
TextField("mystring is here")
.autocapitalization(.sentences)
// Mystring Is Here
Text("mystring is here")
.autocapitalization(.words)
我假设您想要将整个单词串的第一个单词大写。例如:“我的猫很胖,我的脂肪很松弛”应该返回“我的猫很胖,我的脂肪很松弛”。
Swift 5:
为此,您可以导入Foundation,然后使用大写的属性。例子:
import Foundation
var x = "my cat is fat, and my fat is flabby"
print(x.capitalized) //prints "My Cat Is Fat, And My Fat Is Flabby"
如果你想成为一个纯粹主义者,不导入基础,那么你可以创建一个字符串扩展。
extension String {
func capitalize() -> String {
let arr = self.split(separator: " ").map{String($0)}
var result = [String]()
for element in arr {
result.append(String(element.uppercased().first ?? " ") + element.suffix(element.count-1))
}
return result.joined(separator: " ")
}
}
然后你可以这样使用:
var x = "my cat is fat, and my fat is flabby"
print(x.capitalize()) //prints "My Cat Is Fat, And My Fat Is Flabby"