У меня есть строка вроде этого: @"10/04/2011"
, и я хочу сохранить только "10" в другой строке. Как я могу это сделать?
Разделить NSString для доступа к одной конкретной части
Ответ 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]