Каков наилучший способ вырезать путь из NSString?

#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 ее из первой косой черты. Будет ли это работать для вас?