在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。

splitCollectionType的扩展中的一个方法,从Swift 2开始, String不再符合。 幸运的是,还有其他的方式来分割一个String

  1. 使用componentsSeparatedByString

     "ab cd".componentsSeparatedByString(" ") // ["ab", "cd"] 

    正如@dawg指出的那样,这需要你import Foundation

  2. 您可以使用String的字符,而不是在String上调用splitcharacters属性返回一个String.CharacterView ,它符合CollectionType

     "😀 🇬🇧".characters.split(" ").map(String.init) // ["😀", "🇬🇧"] 
  3. 使String符合CollectionType

     extension String : CollectionType {} "w,x,y,z".split(",") // ["w", "x", "y", "z"] 

    虽然,由于苹果决定删除StringCollectionType的一致性,所以坚持一两个选项似乎更明智。


在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"]