如何使用 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 中一个一个地显示每个单词? [复制]

如何使用正则表达式,将字符串中的每个单词首字母大写

如何从 Swift 中的字符串中返回第一个单词?

IOS/Objective-C:按字符串中的单词数对 NSStrings 的 NSArray 进行排序

如何使用 swift 将相同的背景图像添加到我的 ios 应用程序中的所有视图?