如何使用 Swift iOS 将字符串中的每个单词大写
Posted
技术标签:
【中文标题】如何使用 Swift iOS 将字符串中的每个单词大写【英文标题】:How to capitalize each word in a string using Swift iOS 【发布时间】:2015-03-25 16:28:14 【问题描述】:是否有将字符串中的每个单词大写的功能还是手动过程?
例如“鲍勃很高” 我想要“鲍勃很高”
肯定有一些东西,但我发现的 Swift ios 答案似乎都没有涵盖这一点。
【问题讨论】:
var someString = "lol" ; someString.capitalized // “哈哈” 其他一些人在下面详细介绍了此选项。 ;) 【参考方案1】:你在找capitalizedString
讨论 将每个单词中第一个字符的字符串更改为其对应的大写值,并将所有剩余字符设置为其对应的小写值。
和/或capitalizedStringWithLocale(_:)
使用指定的语言环境返回接收者的大写表示。
对于呈现给用户的字符串,传递当前语言环境 ([NSLocale currentLocale])。要使用系统语言环境,请传递 nil。
【讨论】:
我没有尝试过 capitalizedStringWithLocale,所以我会玩它并在几分钟后回复。 谢谢。事实证明,Apple 文档上的 swift 示例输入错误,这让我陷入了一个循环(形象地)。【参考方案2】:斯威夫特 3:
var lowercased = "hello there"
var stringCapitalized = lowercased.capitalized
//prints: "Hello There"
【讨论】:
【参考方案3】:从 iOS 9 开始提供本地化大写功能,因为大写字母可能因语言而异。
if #available(iOS 9.0, *)
"istanbul".localizedCapitalizedString
// In Turkish: "İstanbul"
【讨论】:
对于 Swift,它是localizedCapitalized
,对于 ObjC,它是 localizedCapitalizedString
。【参考方案4】:
上面提供的答案示例。
var sentenceToCap = "this is a sentence."
println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale()) )
最终结果是一个字符串“This Is A Sentence”
【讨论】:
【参考方案5】:对于 Swift 3,它已更改为 capitalized
。
讨论 此属性执行规范(非本地化)映射。它适用于需要稳定结果而不依赖于当前语言环境的编程操作。 大写字符串是将每个单词中的第一个字符更改为其相应的大写值,并将所有其余字符设置为其相应的小写值的字符串。 “单词”是由空格、制表符或行终止符分隔的任何字符序列(列在 getLineStart(_:end:contentsEnd:for:) 下)。不考虑一些常见的单词分隔标点符号,因此此属性通常可能不会为多字字符串产生所需的结果。 不保证大小写转换是对称的或生成与原始字符串长度相同的字符串。请参阅小写的示例。
【讨论】:
【参考方案6】:有一个内置函数
nameOfString.capitalizedString
这将大写字符串的每个单词。仅大写您可以使用的第一个字母:
nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString)
Older Thread
【讨论】:
我试过了,但它对我不起作用。它似乎只限制了第一个单词。我找到了推荐这个的帖子。【参考方案7】:Swift 5 版本的Christopher Wade's answer
let str = "my string"
str.capitalized(with: NSLocale.current)
print(str) // prints My String
【讨论】:
【参考方案8】:这是我想出的似乎可行的方法,但我愿意接受任何更好的方法。
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 iOS 将字符串中的每个单词大写的主要内容,如果未能解决你的问题,请参考以下文章
ios swift:是不是可以更改字符串中某个单词的字体样式?
如何使用 Javascript 分解 HTML 字符串中的每个单词,然后在 HTML 中一个一个地显示每个单词? [复制]