Mar*_*eIV 10 split swift swift4
考虑以下扩展:
extension Array where Element == String {
func foo(){
}
}
Run Code Online (Sandbox Code Playgroud)
并考虑我想要拆分的以下字符串,以便我可以使用扩展名...
let string = "This|is|a|test"
let words = string.split(separator: "|")
Run Code Online (Sandbox Code Playgroud)
问题是wordsa[Substring]和 not[String]所以我不能调用foo()它。
那么在 Swift 4 中,如何拆分字符串以返回 a[String]而不是 a [Substring]?
Mar*_*n R 13
正如 Leo 上面所说,你可以使用 components(separatedBy:)
let string = "This|is|a|test"
let words = string.components(separatedBy: "|")
words.foo()
Run Code Online (Sandbox Code Playgroud)
相反,它返回一个[String].
如果您想坚持使用
split()(例如因为它有更多选项,例如省略空子序列),那么您必须通过将每个转换Substring
为 a来创建一个新数组String:
let string = "This|is|a|test"
let words = string.split(separator: "|").map(String.init)
words.foo()
Run Code Online (Sandbox Code Playgroud)
或者 - 如果可能的话 - 使数组扩展方法更通用,以采用符合StringProtocol协议的参数,包括String和Substring:
extension Array where Element: StringProtocol {
func foo(){
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |