在Swift中,获取字符串中每个单词的第一个字符的最有效方法是什么?

时间:2019-03-12 14:37:06

标签: swift string

获取字符串中每个单词的第一个字符的最简洁方法是什么?

开始:

let str = "First Middle Last"

预期输出:

FML

您将使用for循环来获取每个单词的前缀,映射函数还是reduce?最有效的方法是什么?

2 个答案:

答案 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"