在Swift 2中使用分割函数
比方说,我想通过一个空的空间拆分一个string。 这个代码片段在Swift 1.x中工作正常。 它在Xcode 7 Beta 1中的Swift 2中不起作用。
var str = "Hello Bob" var foo = split(str) {$0 == " "}
我得到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
任何人都知道如何正确调用它?
更新 :添加了一个注意,这是Xcode 7testing版1。
split是CollectionType的扩展中的一个方法,从Swift 2开始, String不再符合。 幸运的是,还有其他的方式来分割一个String :
-
使用
componentsSeparatedByString:"ab cd".componentsSeparatedByString(" ") // ["ab", "cd"]正如@dawg指出的那样,这需要你
import Foundation。 -
您可以使用
String的字符,而不是在String上调用split。characters属性返回一个String.CharacterView,它符合CollectionType:"😀 🇬🇧".characters.split(" ").map(String.init) // ["😀", "🇬🇧"] -
使
String符合CollectionType:extension String : CollectionType {} "w,x,y,z".split(",") // ["w", "x", "y", "z"]虽然,由于苹果决定删除
String与CollectionType的一致性,所以坚持一两个选项似乎更明智。
在Swift 3中,分别在选项1和2中:
-
componentsSeparatedByString(:)已被重命名为components(separatedBy:)。 -
split(:)已经被重命名为split(separator:)。
斯威夫特4
let str = "Hello Bob" let strSplitArray = str.split(separator: " ") strSplitArray.first! // "Hello" strSplitArray.last! // "Bob"
Xcode 7.1.1与Swift 2.1
let str = "Hello Bob" let strSplit = str.characters.split(" ") String(strSplit.first!) String(strSplit.last!)
在Swift 3中, componentsSeparatedByString SeparatedByString和split是这样使用的。
let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]
分裂
let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]