当前位置:  开发笔记 > 编程语言 > 正文

按组件拆分字符串并将组件保留在原位

如何解决《按组件拆分字符串并将组件保留在原位》经验,为你挑选了1个好方法。

不像string.components(separatedBy: ...)我想在生成的数组中保留分隔符.代码更具说明性

let input = "foo&bar|hello"
let output = string.tokenize(splitMarks: ["&", "|"])
let desiredResult = ["foo", "&", "bar", "|", "hello"]

标准库中是否有任何功能可以执行此操作?如果不是,我怎么能实现这样的功能?



1> Nirav D..:

为此,你需要遍历String并检查它的每一个characters是否是令牌.你可以做extensionString了,像这样.

extension String {

    func stringTokens(splitMarks: Set) -> [String] {

        var string = ""
        var desiredOutput = [String]()
        for ch in self.characters {
            if splitMarks.contains(String(ch)) {
                if !string.isEmpty {
                    desiredOutput.append(string)
                }
                desiredOutput.append(String(ch))
                string = ""
            }
            else {
                string += String(ch)
            }
        }
        if !string.isEmpty {
            desiredOutput.append(string)
        }
        return desiredOutput
    }
}

现在你可以像这样调用这个函数.

let input = "foo&bar|hello"
print(input.stringTokens(splitMarks: ["&", "|"]))

产量

["foo", "&", "bar", "|", "hello"]

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有