获取字符串中每个单词的第一个字符的最简洁方法是什么?
开始:
let str = "First Middle Last"
预期输出:
FML
您将使用for循环来获取每个单词的前缀,映射函数还是reduce?最有效的方法是什么?
答案 0 :(得分:4)
您可以这样实现:
let result = str.components(separatedBy: " ").map { String($0.prefix(1))}.joined()
答案 1 :(得分:1)
您可以使用components(separatedBy:)
在每个空格字符(或空格,如果需要的话,包括换行符)上将字符串拆分为单词,然后在map
上调用[String]
获取每个单词的第一个字符。
let startingLetters = str.components(separatedBy: " ").map{$0.prefix(1)} // ["F", "M", "L"]
如果要将这些字母合并为一个String
,则应使用reduce
而不是map
(在这里我也使用了CharacterSet
,其中包含所有空格和换行符,而不是硬编码的" "
(出于演示目的),请选择最适合您的实际需求的分隔符。
let joinedStartingLetters = str.components(separatedBy: CharacterSet.whitespacesAndNewlines).reduce("", {$0+$1.prefix(1)}) // "FML"