修改切片从字符串到字符串的功能,如果找不到字符串则返回最后一个索引

鹿角熊

我有一个切片功能,我在这里我想知道如何修改它,以便在to找不到字符串的情况下找到from返回的整个字符串的结尾索引(.count-1)。现在,如果我打电话.slice并且没有to找到字符串,显然很崩溃

extension String {

    func slice(from: String, to: String) -> String? {

        return (range(of: from)?.upperBound).flatMap { substringFrom in
            (range(of: to, range: substringFrom..<endIndex)?.lowerBound).map { substringTo in
                String(self[substringFrom..<substringTo])
            }
        }
    }
}
rmaddy

这是一种可能的解决方案:

extension String {
    func slice(from: String, to: String) -> String? {
        if let fromRng = range(of: from) {
            if let toRng = range(of: to, range: fromRng.upperBound..<endIndex) {
                // "from" and "to" found, get parts between
                return String(self[fromRng.upperBound..<toRng.lowerBound])
            } else {
                // "to" not found, return everything after "from"
                return String(self[fromRng.upperBound...])
            }
        } else {
            // "from" not found
            return nil
        }
    }
}

它不像原始版本那样“花哨”,但我个人认为逻辑更容易阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章