Teilen Sie ein NSString auf, um auf ein bestimmtes Stück zuzugreifen
-
24-10-2019 - |
Frage
Ich habe eine solche Zeichenfolge: @"10/04/2011"
Und ich möchte nur die "10" in einer anderen Zeichenfolge speichern. Wie kann ich das machen?
Lösung
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];
Aktualisieren Sie 7/3/2018:
Nachdem die Frage ein Swift -Tag erworben hat, sollte ich die schnelle Art und Weise hinzufügen. Es ist ziemlich einfach:
let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]
Obwohl beachten Sie, dass es Ihnen eine Reihe von einer Reihe gibt Substring
. Wenn Sie diese in gewöhnliche Zeichenfolgen umwandeln müssen, verwenden Sie sie map
let strings = "10/04/2011".split(separator: "/").map{ String($0) }
let firstBit = strings[0]
oder
let firstBit = String(substrings[0])
Andere Tipps
Eines dieser 2:
NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];
Denken Sie jedoch daran, dass manchmal eine Datumszeichenfolge nicht richtig formatiert und ein Tag (oder ein Monat) nicht als 8 als 08 angezeigt wird, sodass der erste der schlimmste der beiden Lösungen sein könnte.
Letzteres sollte in ein separates Array gesteckt werden, damit Sie tatsächlich nach der Länge der zurückgegebenen Sache überprüfen können, sodass Sie keine Ausnahmen erhalten, die bei einer beschädigten oder ungültigen Datumszeichenfolge von jeder Quelle, die Sie haben, ausgeworfen werden können.
Es funktioniert gut
NSString *dateString = @"10/10/2010";//Date
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
Ziel c:
NSString *day = [@"10/04/2011" componentsSeparatedByString:@"/"][0];
Schnell:
var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
Verwenden [myString componentsSeparatedByString:@"/"]
Ich habe das formatiert Schöne Lösung, die von Jeremyp oben bereitgestellt wird in eine generische wiederverwendbare Funktion unten:
///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
return [stringToBeExploded componentsSeparatedByString: delimiter];
}
Swift 3.0 Version
let arr = yourString.components(separatedBy: "/")
let month = arr[0]