2016-04-01 13 views
1

In meiner App gibt es eine Zeit Zeichenfolge, in der ich jedes Teil trennen und verarbeiten muss.componentsSeparatedByString funktioniert nicht in swift

Meine Schnur ist wie

9:00 AM – 11:00 PM 

oder

9:00 AM – 11:00 PM,9:00 AM – 11:00 PM 

Printing description of self.placeOpenTime: 
"10:00 AM – 1:00 PM, 5:00 – 8:00 PM" 
Printing description of allparts: 
▿ 2 elements 
    - [0] : "10:00 AM – 1:00 PM" 
    - [1] : " 5:00 – 8:00 PM" 

Also mein Code, um die Zeichenfolge zu trennen

let allparts = self.placeOpenTime.componentsSeparatedByString(",") 

for (index,_) in allparts.enumerate() { 

    let currentPart = allparts[index] 

    let timeParts = currentPart.componentsSeparatedByString(" - ") 
} 

von diesem Code ist ich timeParts und currentPart als selben bin immer wie

currentPart = "von 9.00 bis 23.00 Uhr"

und

Printing description of timeParts: 
▿ 1 elements 
    - [0] : "9:00 AM – 11:00 PM" 

die

[0] : 9:00 AM 
[1] : 11:00 PM 

Jede mögliche Hilfe geschätzt werden sollte. Danke im Voraus.

+3

Dann wird die Bindestrich-Zeichen in Ihrem Code nicht mit dem im Text übereinstimmt, überprüfen Sie die Unicode-Wert – Wain

+0

@Wain Ja, es ist. Danke, Mann. – Max

Antwort

1

Wie @wain kommentierte, habe ich nach Unicode-Wert von "-" und es hat funktioniert.

Ich habe diesen Code ersetzt

let currentPart : String = allparts[index] 

let data = "\\U2013".dataUsingEncoding(NSUTF8StringEncoding) 

let unicode = NSString(data: data!, encoding: NSNonLossyASCIIStringEncoding) 

let timeParts = currentPart.componentsSeparatedByString(" \(unicode!) ") 

Welche komplizierter Code ist klein, was zu tun. So wie pro @ Martin R vorschlagen, der einfache Code, dies zu tun ist

let currentPart : String = allparts[index] 

let timeParts = currentPart.componentsSeparatedByString(" \u{2013} ") 
+2

Das ist viel zu kompliziert. Sie können 'componentsSeparatedByString (" \ u {2013} ")' oder einfach 'componentsSeparatedByString (" - ")' schreiben, wobei '-' der" EN-DASH "ist (Option-Minus auf meiner Tastatur). –

+0

@MartinR, Ja das hat funktioniert. Vielen Dank. Ich werde die Antwort aktualisieren. – Max

0
//may be issue with separetor string , once check is the separtor is proper string or not 
let timeParts = currentPart.componentsSeparatedByString("-") 
Verwandte Themen