여러 가지 방법이 있지만 가장 쉬운 방법은 구분 기호를 사용하여 문자열을 배열로 분할하는 것입니다.
JavaScript를 알고있는 경우 .split()
문자열 메소드와 같습니다. 스위프트 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 문자열을 분할 이제
let ids: [String] = "XbfdASF;FBACasc|Piida;bfedsSA|XbbnSF;vsdfAs|".split("|")
, 당신은 다음과 같을 것입니다 귀하의 ID의 문자열 배열이 있습니다 : 그것은 당신의 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
그 자리를 가지고 있지만 O를 포기하는 것이 현명 할 것 문자열에 대한 유형을 구조화합니다. 따라서 문자열을 나누면 '배열 배열'을 사용하거나 첫 번째 요소가 모두 고유 한 경우 하나의 사전 만 사용하려고합니다. 왜 '분할하는 법'에 대한 질문에서 이것을 언급해야합니까? 'StringLiteralConvertible' 프로토콜 때문에! 사전에 해당 프로토콜을 구현 (또는 자신의 데이터 구조체를 개선) 한 다음 'var data : [String : String] = "XBfdASF; .... As | – GoZoner