#objective-c #macos #cocoa
#objective-c #macos #какао
Вопрос:
Я новичок в Cocoa. У меня есть NSString . это выглядит так
Атрибут: OtherAttributte: /users/user/etc…
Каков наилучший способ отрезать и сохранить отдельно этот путь?
Спасибо.
Ответ №1:
Вы можете использовать rangeOfString и substringFromIndex .
NSString *path = @"Attribute: OtherAttributte: /users/user/etc";
NSRange x = [path rangeOfString:@"/"];
NSString *final = [path substringFromIndex:x.location];
Это сработает, если ваш путь начинается с @»/».
Ответ №2:
Используется rangeOfString:@"/"
для определения местоположения первой косой черты, а затем substringFromIndex:
для ее извлечения.
Ответ №3:
Первый подход:
NSString *path = @"tmp/scratch";
NSArray *pathComponents = [path pathComponents];
Второй подход:
NSString *path = @" /users/user/etc";
NSArray *parts = [list componentsSeparatedByString:@"/"];
Комментарии:
1. Мне нужно отрезать весь путь от атрибутов. Мне не нужно разбивать путь
2. Тогда почему вы не спрашиваете именно об этом?
3. Каков наилучший способ отрезать и сохранить отдельно этот путь? разве это недостаточно ясно? Посмотрите на вопрос. Но все равно спасибо
Ответ №4:
Я бы использовал componentsSeparatedByString: который является методом NSString
.
Ответ №5:
Я не совсем уверен, спрашиваете ли вы, как получить путь из строки аргументов или как получить часть пути, поэтому я опишу, как я бы сделал оба в отдельных шагах ниже:
NSString *args = @"attribute1: attribute2: /users/user/etc";
NSString *path = [[args componentsSeparatedByString:@":"] last];
NSArray *pathComponents = [path pathComponents];
Очевидно, что это зависит от того, что path является значением последнего аргумента, но вы могли бы использовать другой способ поиска пути в массиве, полученном из args
.
Подробную информацию о NSString
методах можно найти здесь, а NSArray
методы здесь .
Комментарии:
1. Мне нужно получить путь из аргументов. Ваше первое решение. Это приятно. Но что, если в имени папки есть символ @»:», это не сработает
2. @User1234 Если ваши пути всегда будут абсолютными, и у вас никогда не будет никаких атрибутов, содержащих косые черты, вы могли бы получить подстроку, получив
NSRange
ее из первой косой черты. Будет ли это работать для вас?