假设我想用空格分割字符串.此代码段在Swift 1.x中正常工作.它在Xcode 7 Beta 1中的Swift 2中不起作用.
var str = "Hello Bob"
var foo = split(str) {$0 == " "}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:
Cannot invoke 'split' with an argument list of type '(String, (_) -> _)
Run Code Online (Sandbox Code Playgroud)
有人知道怎么称呼这个吗?
更新:添加了一条说明,这是针对Xcode 7 beta 1的.
ABa*_*ith 126
split是一种扩展的方法CollectionType,从Swift 2开始,String不再符合.幸运的是还有其他方法可以拆分String:
用途componentsSeparatedByString:
"ab cd".componentsSeparatedByString(" ") // ["ab", "cd"]
Run Code Online (Sandbox Code Playgroud)
正如@dawg所指出的,这需要你import Foundation.
你可以使用the的字符而不是调用splita .该属性返回a ,符合:StringStringcharactersString.CharacterViewCollectionType
" ".characters.split(" ").map(String.init) // ["", ""]
Run Code Online (Sandbox Code Playgroud)请String遵守CollectionType:
extension String : CollectionType {}
"w,x,y,z".split(",") // ["w", "x", "y", "z"]
Run Code Online (Sandbox Code Playgroud)
虽然,因为Apple决定取消对它String的一致性CollectionType似乎更明智地坚持选择一两个.
在Swift 3中,分别在选项1和2中:
componentsSeparatedByString(:)已重命名为components(separatedBy:).split(:)已重命名为split(separator:).War*_*shi 18
let str = "Hello Bob"
let strSplitArray = str.split(separator: " ")
strSplitArray.first! // "Hello"
strSplitArray.last! // "Bob"
Run Code Online (Sandbox Code Playgroud)
let str = "Hello Bob"
let strSplit = str.characters.split(" ")
String(strSplit.first!)
String(strSplit.last!)
Run Code Online (Sandbox Code Playgroud)
在Swift 3中componentsSeparatedByString并split以这种方式使用.
let splitArray = "Hello World".components(separatedBy: " ") // ["Hello", "World"]
Run Code Online (Sandbox Code Playgroud)
分裂
let splitArray = "Hello World".characters.split(separator: " ").map(String.init) // ["Hello", "World"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42381 次 |
| 最近记录: |