考虑以下扩展名:
<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]
?
答案 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
协议的参数,
它涵盖了String
和Substring
:
extension Array where Element: StringProtocol {
func foo(){
}
}