在Swift2中使用split函数

Using the split function in Swift 2

假设我想用一个空 space 拆分一个字符串。此代码片段在 Swift 1.x 中运行良好。它在 Swift 2 in Xcode 7 Beta 1.

中不起作用
var str = "Hello Bob"
var foo = split(str) {[=11=] == " "}

我收到以下编译器错误:

Cannot invoke 'split' with an argument list of type '(String, (_) -> _)

有人知道如何正确调用它吗?

已更新:添加了一条注释,说明这是针对 Xcode 7 beta 1 的。

splitCollectionType 扩展中的一种方法,从 Swift 2 开始,String 不再符合。幸运的是还有其他方法可以拆分 String:

  1. 使用componentsSeparatedByString:

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

    正如@dawg 所指出的,这需要您 import Foundation.

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

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

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

    不过,自从 Apple 决定取消 StringCollectionType 的遵从性后,坚持使用一两个选项似乎更明智。


在Swift3中,选项1和2分别为:​​

  • componentsSeparatedByString(:) 已重命名为 components(separatedBy:)
  • split(:) 已重命名为 split(separator:).

Swift 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!)

在Swift3中componentsSeparatedByStringsplit就是这样使用的

let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]

拆分

let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]