如何在方法链中获取字符串的第一个或最后几个字符?

时间:2017-04-07 12:16:53

标签: swift string prefix substring suffix

如果我使用函数式方法链进行字符串操作,我不能使用usual machinery来获取第一个或最后几个字符:我无权访问当前字符串的引用,所以我可以不计算指数。

示例:

[some, nasty, objects]
    .map( { $0.asHex } )
    .joined()
    .<first 100>
    .uppercased()
    + "..."

用于截断的调试输出。

那么如何实现<first 100>,还是必须打破链条?

1 个答案:

答案 0 :(得分:1)

我不知道有任何API可以做到这一点。幸运的是,写我们自己是一个简单的练习:

extension String {
    func taking(first: Int) -> String {
        if first <= 0 {
            return ""
        } else if let to = self.index(self.startIndex, 
                                      offsetBy: first, 
                                      limitedBy: self.endIndex) {
            return self.substring(to: to)
        } else {
            return self
        }
    }
}

从最后开始是类似的。

查找完整代码(包括变体)和测试here