У мене є такий рядок: @"10/04/2011"
і я хочу зберегти лише "10" в іншій рядку. Як я можу це зробити?
У мене є такий рядок: @"10/04/2011"
і я хочу зберегти лише "10" в іншій рядку. Як я можу це зробити?
Відповіді:
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];
Оновлення 3.07.2018:
Тепер, коли питання придбало тег 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])
[foo firstObject]
може бути кращим у загальному випадку, оскільки воно також буде правильно обробляти порожній масив.
Будь-який із цих 2:
NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];
Хоча майте на увазі, що іноді рядок дати не форматований належним чином, а день (або місяць із цього питання) відображається як 8, а не як 08, тому перший може бути найгіршим із двох рішень.
Останній слід помістити в окремий масив, щоб ви могли фактично перевірити довжину повернутої речі, тому ви не отримаєте жодних винятків, викинутих у разі пошкодженого чи недійсного рядка дати з будь-якого джерела.
Його добре працює
NSString *dateString = @"10/10/2010";//Date
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
Використовуйте [myString componentsSeparatedByString:@"/"]
Я відформатував приємне рішення, яке надав JeremyP вище, у більш загальну функцію для багаторазового використання нижче:
///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
return [stringToBeExploded componentsSeparatedByString: delimiter];
}