如何将String拆分为[String]而不是[Substring]?

时间:2018-03-10 06:38:22

标签: swift split swift4

考虑以下扩展名:

<div class="row">
  <div class="col-sm-4 offset-sm-4"></div>
</div>

考虑以下要拆分的字符串,以便我可以使用扩展名...

extension Array where Element == String {
    func foo(){
    }
}

问题是let string = "This|is|a|test" let words = string.split(separator: "|") words而非[Substring],因此我无法在其上调用[String]

所以在Swift 4中,如何拆分字符串以返回foo()而不是[String]

1 个答案:

答案 0 :(得分:3)

正如Leo上面所说,你可以使用components(separatedBy:)

let string = "This|is|a|test"
let words = string.components(separatedBy: "|")
words.foo()

而是返回[String]

如果你想坚持下去 split()(例如,因为它有更多选项,例如省略 空子序列),然后你必须通过转换每个Substring来创建一个新数组 到String

let string = "This|is|a|test"
let words = string.split(separator: "|").map(String.init)
words.foo()

或者 - 如果可能 - 使数组扩展方法更多 一般采取符合StringProtocol协议的参数, 它涵盖了StringSubstring

extension Array where Element: StringProtocol {
    func foo(){
    }
}