假设我这里有一个字符串:

var fullName: String = "First Last"

我想在空白处拆分字符串,并将值分配给它们各自的变量

var fullNameArr = // something like: fullName.explode(" ") 

var firstName: String = fullNameArr[0]
var lastName: String? = fullnameArr[1]

此外,有时用户可能没有姓氏。


当前回答

在Swift 4中将字符串拆分为数组的步骤。

赋值字符串基于@spling。

注意:variableName.components(separatedBy:“split关键字”)

let fullName: String = "First Last @ triggerd event of the session by session storage @ it can be divided by the event of the trigger."
let fullNameArr = fullName.components(separatedBy: "@")
print("split", fullNameArr)

其他回答

这在Beta 5中再次发生了变化。哭泣!它现在是CollectionType上的一个方法

旧版本:

var fullName = "First Last"
var fullNameArr = split(fullName) {$0 == " "}

新建:

var fullName = "First Last"
var fullNameArr = fullName.split {$0 == " "}

苹果发行说明

我发现了一个有趣的案例

方法1

var data:[String] = split( featureData ) { $0 == "\u{003B}" }

当我使用此命令从从服务器加载的数据中拆分一些符号时,它可以在模拟器中测试时拆分,并与测试设备同步,但不会在发布应用程序和Ad Hoc中拆分

我花了很多时间来跟踪这个错误,它可能会被某些Swift版本或iOS版本诅咒,或者两者都没有

这也与HTML代码无关,因为我尝试stringByRemovangPercentEncoding,但它仍然不起作用

2015年10月10日新增

在Swift 2.0中,此方法已更改为

var data:[String] = featureData.split {$0 == "\u{003B}"}

方法2

var data:[String] = featureData.componentsSeparatedByString("\u{003B}")

当我使用此命令时,它可以正确分割从服务器加载的相同数据


结论,我真的建议使用方法2

string.componentsSeparatedByString("")

将字符串拆分为数组的简单方法

var fullName:String=“First Last”;var fullNameArr=fullName.componentsSeparatedByString(“”)var firstName:String=fullNameArr[0]var lastName:String=fullNameArr[1]

let str = "one two"
let strSplit = str.characters.split(" ").map(String.init) // returns ["one", "two"]

Xcode 7.2(7C68)

作为WMios答案的替代方案,您还可以使用componentsSeparatedByCharactersSet,这在分隔符(空格、逗号等)较多的情况下非常方便。

使用您的特定输入:

let separators = NSCharacterSet(charactersInString: " ")
var fullName: String = "First Last";
var words = fullName.componentsSeparatedByCharactersInSet(separators)

// words contains ["First", "Last"]

使用多个分隔符:

let separators = NSCharacterSet(charactersInString: " ,")
var fullName: String = "Last, First Middle";
var words = fullName.componentsSeparatedByCharactersInSet(separators)

// words contains ["Last", "First", "Middle"]