Mam taki ciąg: @"10/04/2011"
i chcę zapisać tylko „10” w innym ciągu. Jak mogę to zrobić?
Mam taki ciąg: @"10/04/2011"
i chcę zapisać tylko „10” w innym ciągu. Jak mogę to zrobić?
Odpowiedzi:
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];
Aktualizacja 7/3/2018:
Teraz, gdy pytanie uzyskało znacznik Swift, powinienem dodać szybki sposób zrobienia tego. To jest prawie tak proste:
let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]
Chociaż zauważ, że daje ci tablicę Substring
. Jeśli chcesz przekonwertować je z powrotem na zwykłe ciągi, użyjmap
let strings = "10/04/2011".split(separator: "/").map{ String($0) }
let firstBit = strings[0]
lub
let firstBit = String(substrings[0])
[foo firstObject]
może być lepsze w ogólnym przypadku, ponieważ będzie również poprawnie obsługiwać pustą tablicę.
Którykolwiek z tych 2:
NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];
Pamiętaj jednak, że czasami ciąg daty nie jest poprawnie sformatowany, a dzień (lub miesiąc) jest wyświetlany jako 8, a nie 08, więc pierwsze z nich może być najgorszym z dwóch rozwiązań.
Ta ostatnia powinna zostać umieszczona w oddzielnej tablicy, aby można było faktycznie sprawdzić długość zwracanej rzeczy, dzięki czemu nie otrzymasz żadnych wyjątków w przypadku nieprawidłowego lub nieprawidłowego ciągu daty z dowolnego źródła.
Działa dobrze
NSString *dateString = @"10/10/2010";//Date
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
Posługiwać się [myString componentsSeparatedByString:@"/"]
Sformatowałem fajne rozwiązanie dostarczone przez JeremyP powyżej w bardziej ogólną funkcję wielokrotnego użytku poniżej:
///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
return [stringToBeExploded componentsSeparatedByString: delimiter];
}