Swift 5中如何避免capitalized方法转换时部分文本不必要大写?
解决思路
Swift 内置的 capitalized 方法规则是将每个单词的第一个字母字符大写,其余字母字符小写,所以数字开头的单词会把紧随数字后的第一个字母变成大写,不符合你的需求。我们可以自定义规则拆分字符串处理:
- 按空格拆分所有单词
- 对每个单词判断:如果第一个字符是数字,整个单词全部转小写;如果第一个字符是字母,仅首字母大写,其余转小写
- 最后拼接所有单词
实现代码
func customCapitalized(_ string: String) -> String { return string.components(separatedBy: .whitespaces) .map { word in guard let firstChar = word.first else { return word } if firstChar.isNumber { return word.lowercased() } else { return word.prefix(1).uppercased() + word.dropFirst().lowercased() } } .joined(separator: " ") }
测试效果
调用示例:
var string = "6TH FLOOR BAMBALAPITIYA" print(customCapitalized(string))
输出结果:
6th Floor Bambalapitiya
该通用实现可以适配所有包含数字开头单词的字符串转换场景。
内容的提问来源于stack exchange,提问作者Thejani Saranaguptha
相关产品推荐
相关产品推荐

