Как мне использовать NSRange с этим NSString? - PullRequest
2 голосов
/ 15 марта 2012

У меня есть следующее NSString:

productID = @"com.sortitapps.themes.pink.book";

В конце «книга» может быть чем угодно… «музыка», «фильмы», «игры» и т. Д.

Мне нужно найти третий период после слова розовый, чтобы я мог заменить это последнее слово "книга" чем-то другим.Как мне сделать это с NSRange?В основном мне это нужно:

partialID = @"com.sortitapps.themes.pink.";

Ответы [ 3 ]

7 голосов
/ 15 марта 2012

Вы можете попробовать поиск точки в обратном направлении и использовать результат для получения желаемого диапазона:

NSString *str = @"com.sortitapps.themes.pink.book";
NSUInteger dot = [str rangeOfString:@"." options:NSBackwardsSearch].location;

NSString *newStr =
   [str stringByReplacingCharactersInRange:NSMakeRange(dot+1, [str length]-dot-1)
                                withString:@"something_else"];
2 голосов
/ 15 марта 2012

Вы можете использовать -[NSString componentsSeparatedByString:@"."], чтобы разделить на компоненты, создать новый массив с желаемыми значениями, затем используйте [NSArray componentsJoinedByString:@"."], чтобы снова присоединить ваш измененный массив к строке.

2 голосов
/ 15 марта 2012

Ну, хотя это не универсальное решение для поиска символов, в вашем конкретном случае вы можете «обмануть» и сохранить код, выполнив следующее:

[productID stringByDeletingPathExtension];

По сути, я рассматриваю имя как имя файла и удаляю последнее (и только последнее) расширение, используя для этого метод NSString.

...