我相信this post 有您正在寻找的答案,但注意它会忽略专有名词和其他应该大写的单词。通过使用它以及UITextChecker,您也许可以得到您正在寻找的东西。它有点老了,没有为较新版本的 Swift 更新任何答案,所以我继续更新 this answer 的语法:
extension String {
func toUppercaseAtSentenceBoundary() -> String {
var result = ""
self.uppercased().enumerateSubstrings(in: self.startIndex..<self.endIndex, options: .bySentences) { (sub, _, _, _) in
result += String(sub!.prefix(1))
result += String(sub!.dropFirst(1)).lowercased()
}
return result as String
}
}
// Example usage
var str = "this Is my String."
print(str.toUppercaseAtSentenceBoundary())
用于纠正拼写错误
UITextChecker 类是您可能还想使用的东西,如果您想更正文本中的任何拼写错误(您确实提到了自动更正,所以我想我会添加它)。
NSHipster has a nice tutorial on how to use it。这是他们教程中的代码示例。
import UIKit
let str = "hipstar"
let textChecker = UITextChecker()
let misspelledRange =
textChecker.rangeOfMisspelledWord(in: str,
range: NSRange(0..<str.utf16.count),
startingAt: 0,
wrap: false,
language: "en_US")
if misspelledRange.location != NSNotFound,
let firstGuess = textChecker.guesses(forWordRange: misspelledRange,
in: str,
language: "en_US")?.first
{
print("First guess: \(firstGuess)") // First guess: hipster
} else {
print("Not found")
}
获取要检查的文本:
如果您使用的是UITextField,则通过textFieldShouldEndEditing(_:) 方法实现UITextFieldDelegate 以在文本字段完成编辑时检查字符串的拼写。
如果您使用UITextView,您可以使用类似的UITextViewDelegate 方法来确定何时检查和替换字符串中的各种单词。