Разделить NSString для доступа к одному конкретному фрагменту - PullRequest
142 голосов
/ 27 апреля 2011

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

Ответы [ 7 ]

375 голосов
/ 27 апреля 2011
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];

Обновление от 03.07.2008:

Теперь, когда вопрос получил тег Swift, я должен добавить способ Swift сделать это. Все очень просто:

let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]

Хотя обратите внимание, что он дает вам массив Substring. Если вам нужно преобразовать их обратно в обычные строки, используйте map

let strings = "10/04/2011".split(separator: "/").map{ String($0) }
let firstBit = strings[0]

или

let firstBit = String(substrings[0])
36 голосов
/ 27 апреля 2011

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

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

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

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

9 голосов
/ 06 августа 2013

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

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
8 голосов
/ 10 мая 2014

Objective-C:

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

Swift:

     var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
6 голосов
/ 27 апреля 2011

Использование [myString componentsSeparatedByString:@"/"]

5 голосов
/ 13 марта 2013

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

///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
    return [stringToBeExploded componentsSeparatedByString: delimiter];
}
1 голос
/ 06 июля 2017

Версия Swift 3.0

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