将字符串拆分为数组并修剪每个值的有效方法 - Swift

时间:2015-12-14 12:38:55

标签: arrays swift csv

为了更好地理解swift,我想看看是否有更有效的方法来编写下面的代码。代码应该使用self.categories String,将其转换为数组(以逗号分隔的值),并在返回数组之前修剪每个值。

func get_categories() -> Array<String>{
    let categories = self.categories!.componentsSeparatedByString(",")
    var categories_to_return = Array<String>()
    for category in categories {
        categories_to_return.append(category.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()))
    }
    return categories_to_return
}

我怀疑我在这里做错了 - 也许我不需要创建两个独立的阵列?也许还有另一种我以前从未见过的捷径?非常感谢提前!

2 个答案:

答案 0 :(得分:5)

您可以直接对map的结果使用componentsSeparatedByString,就像这样,并在不使用其他变量的情况下返回它:

func get_categories() -> Array<String>{
    return self.categories!.componentsSeparatedByString(",").map { $0.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) }
}

注意:在map闭包中,$0表示组件数组中的当前项。它也可以这样写:

func get_categories() -> Array<String>{
    return self.categories!
        .componentsSeparatedByString(",")
        .map { word in word.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) }
}

答案 1 :(得分:1)

这是一般用例的更通用的功能。

func getSplitAndTrimmed(text: String) -> Array<String> {
    return text.componentsSeparatedByString(",").map { $0.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) }
}

功能与Eric写的相同。