有很多方法可以做到這一點,但最簡單的方法是使用分隔符將字符串拆分爲數組。
如果您認識JavaScript,則相當於.split()
字符串方法; Swift does have this functionality,但正如你在那裏看到的那樣,它會變得有點混亂。您可以擴展字符串like this以使其更簡單。爲了完整起見,我將在這裏包含它:
import Foundation
extension String {
public func split(separator: String) -> [String] {
if separator.isEmpty {
return map(self) { String($0) }
}
if var pre = self.rangeOfString(separator) {
var parts = [self.substringToIndex(pre.startIndex)]
while let rng = self.rangeOfString(separator, range: pre.endIndex..<endIndex) {
parts.append(self.substringWithRange(pre.endIndex..<rng.startIndex))
pre = rng
}
parts.append(self.substringWithRange(pre.endIndex..<endIndex))
return parts
} else {
return [self]
}
}
}
現在,你可以叫.split()
對字符串是這樣的:
"test".split("e") // ["t", "st"]
所以,你首先應該做你的ID字符串分割成段你的分離,這將是|
,因爲這是你如何ID是分開的:
let ids: [String] = "XbfdASF;FBACasc|Piida;bfedsSA|XbbnSF;vsdfAs|".split("|")
現在,你有你的ID的字符串數組,看起來像這樣:
["XbfdASF;FBACasc", "Piida;bfedsSA", "XbbnSF;vsdfAs"]
你的ID是在格式ID;VALUE
,這樣你就可以像這樣再次分裂他們:
let pair: [String] = ids[anyIndex].split(";") // ["ID", "VALUE"]
您可以在索引1
在該數組的索引0和值訪問ID
例子:
let id: String = ids[1].split(";")[0]
let code: String = ids[1].split(";")[1]
println("\(id): \(code)") // Piida: bfedsSA
編碼的數據結構轉換爲字符串有它的地方,但你會是不明智的放棄鄰爲字符串構造類型。所以,一旦你得到你的字符串拆分,你會想要使用'數組對',或者,如果所有的第一個元素是唯一的,只需一個字典。爲什麼我在「如何分裂」的問題中提到這一點?由於'StringLiteralConvertible'協議!在Dictionary上實現該協議(或者更好地使用你自己的數據結構),然後你可以使用'var data:[String:String] =「XBfdASF; .... As |」 – GoZoner 2014-12-06 15:57:09