有没有一种函数可以将字符串中的每个单词首字母大写,或者这是一个手动的过程?
例如,"bob is tall",我想要 "Bob Is Tall"
肯定有这样的函数,但我在找到的 Swift IOS 答案中似乎都没有涉及到这个问题。
您是否正在寻找capitalized
?
讨论
将每个单词的第一个字符更改为相应的大写值,并将所有剩余字符设置为相应的小写值的字符串。
和/或capitalized(with locale:)
(另请参见:localizedCapitalized
)
使用指定的区域设置返回接收器的大写表示形式。
对于呈现给用户的字符串,请传递当前区域设置(Locale.current)。要使用系统区域设置,请传递nil。
capitalized
,capitalized(with: Locale?)
和localizedCapitalized
。在Objective-C中,名称仍然与上面相同。长话短说,在Obj-C中,惯例仍然是用该类型的简短名称后缀来返回该类型的实例属性,例如…String
- 但在Swift中不是这样,Swift编译器会自动从从Obj-C到Swift桥接的属性名称中删除该后缀。 - Slipp D. ThompsonSwift 3:
var lowercased = "hello there"
var stringCapitalized = lowercased.capitalized
//prints: "Hello There"
iOS 9以后,本地化的大写功能已经可用,因为在不同语言中,大写字母可能会有所不同。
if #available(iOS 9.0, *) {
"istanbul".localizedCapitalizedString
// In Turkish: "İstanbul"
}
localizedCapitalized
,对于ObjC,它是localizedCapitalizedString
。 - Marcus Adams var sentenceToCap = "this is a sentence."
println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale()) )
最终结果是字符串"This Is A Sentence"
针对Swift 3,这已更改为capitalized
。
讨论
该属性执行规范(非本地化)映射。它适用于需要稳定结果而不依赖于当前语言环境的编程操作。 首字母大写的字符串是首个单词的每个字符更改为其相应的大写值,并将所有剩余字符设置为其相应的小写值所组成的字符串。“单词”是由空格、制表符或行终止符(在getLineStart(_:end:contentsEnd:for:)中列出)分隔的任何字符序列。某些常见的单词分隔标点符号不被视为单词分隔符,因此该属性可能不会为多个单词的字符串产生所需的结果。 大小写转换不能保证对称或生成与原始字符串相同长度的字符串。请参阅lowercased以获取示例。
nameOfString.capitalizedString
这个函数会将字符串中的每个单词首字母都转换成大写。如果只需要将字符串的第一个字母大写,可以使用:
nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString)
这是一个指向旧帖的链接。这是我想出来的看起来可行的方案,但如果有更好的方法,我也很乐意尝试。
func firstCharacterUpperCase(sentenceToCap:String) -> String {
//break it into an array by delimiting the sentence using a space
var breakupSentence = sentenceToCap.componentsSeparatedByString(" ")
var newSentence = ""
//Loop the array and concatinate the capitalized word into a variable.
for wordInSentence in breakupSentence {
newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
}
// send it back up.
return newSentence
}
或者如果我想将其用作字符串类的扩展。
extension String {
var capitalizeEachWord:String {
//break it into an array by delimiting the sentence using a space
var breakupSentence = self.componentsSeparatedByString(" ")
var newSentence = ""
//Loop the array and concatinate the capitalized word into a variable.
for wordInSentence in breakupSentence {
newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
}
// send it back up.
return newSentence
}
}
再次,欢迎任何更好的建议。
Swift 5 版本的 Christopher Wade 的回答
let str = "my string"
let result = str.capitalized(with: NSLocale.current)
print(result) // prints My String