Разделить NSString для доступа к одной конкретной части

У меня есть строка вроде этого: @"10/04/2011", и я хочу сохранить только "10" в другой строке. Как я могу это сделать?

Ответ 1

NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];

Ответ 2

Любой из этих 2:

NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];

Хотя помните, что иногда строка даты не отформатирована должным образом, а день (или месяц, если на то пошло) отображается как 8, а не 08, поэтому первый из них может быть худшим из двух решений.

Последний должен быть помещен в отдельный массив, чтобы вы могли фактически проверить длину возвращаемой вещи, поэтому вы не получите никаких исключений, возникающих в случае коррумпированной или недопустимой строки даты из любого источника, который у вас есть.

Ответ 3

Хорошо работает

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];

Ответ 4

Objective-c:

     NSString *day = [@"10/04/2011" componentsSeparatedByString:@"/"][0];

Swift:

     var day: String = "10/04/2011".componentsSeparatedByString("/")[0]

Ответ 5

Используйте [myString componentsSeparatedByString:@"/"]

Ответ 6

Я отформатировал отличное решение, предоставленное JeremyP выше, в более общую функцию повторного использования ниже:

///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
    return [stringToBeExploded componentsSeparatedByString: delimiter];
}

Ответ 7

версия Swift 3.0

let arr = yourString.components(separatedBy: "/")
let month = arr[0]