使用 Swift 实现从字符串数组中获取子字符串

9

我有一个数组:

var array = ["1|First", "2|Second", "3|Third"]

我该如何去掉“1|”,“2|”,“3|”?结果应该像这样:
println(newarray) //["First", "Second", "Third"]
1个回答

10

您可以使用(假设字符串将包含“|”字符):

let newarray = array.map { $0.componentsSeparatedByString("|")[1] }

正如@Grimxn所指出的,如果您无法假设“|”字符始终在字符串中,则请使用:

let newarray = array.map { $0.componentsSeparatedByString("|").last! }
let newarray2 = array.map { $0.substringFromIndex(advance(find($0, "|")!, 1)) }

result2 可能会更快一些,因为它不会从 componentsSeparatedByString 创建一个中间数组。

或者,如果您想修改原始数组:

for index in 0..<array.count {
    array[index] = array[index].substringFromIndex(advance(find(array[index], "|")!, 1))
}

Swift 1.2语法:map(array) { $0.componentsSeparatedByString("|")[1] }。答案是Swift 2.0。 - Pham Hoan
其实,我也喜欢Swift 1.2。 - Dániel Nagy
抱歉,我犯了一个错误。Swift 1.2拥有map()作为全局函数和数组函数。 - Pham Hoan
如果"|"不存在,这个解决方案将会崩溃。请尝试使用var array = ["1|First", "2|Second", "3|Third", "Fourth"]进行测试。考虑将解决方案更改为let newarray = array.map { $0.componentsSeparatedByString("|").last! } - Grimxn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接