Цель-C: Подстрока и заменить - PullRequest
1 голос
/ 21 ноября 2011

У меня есть NSString, который является URL.Этот URL-адрес необходимо вырезать:

NSString *myURL = @"http://www.test.com/folder/testfolder";
NSString *test = [myURL stringByReplacingCharactersInRange:[myURL rangeOfString:@"/" options:NSBackwardsSearch] withString:@""];

У меня есть этот URL-адрес http://www.test.com/folder/testfolder, и я хочу, чтобы переменная test имела значение http://www.test.com/folder/, поэтому testfolder следует вырезать.Поэтому я попытался найти NSRange testfolder, чтобы заменить его пустой строкой.

Но это не работает.Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 21 ноября 2011

Вы можете превратить его в URL и использовать -[NSURL URLByDeletingLastPathComponent]:

NSString *myURLString = @"http://www.test.com/folder/testfolder";
NSURL *myURL = [NSURL URLWithString:myURLString];
myURL = [myURL URLByDeletingLastPathComponent];
myURLString = [myURL absoluteString];
3 голосов
/ 21 ноября 2011

Попробуйте это:

NSString *myURL = @"http://www.test.com/folder/testfolder";
NSString *test = [myURL stringByDeletingLastPathComponent];
NSLog(@"%@", test);

вы должны получить> http://www.test.com/folder/

0 голосов
/ 21 ноября 2011

Вы не можете использовать NSRange, возвращаемый [myURL rangeOfString: @ "/" options: NSBackwardsSearch], потому что его длина равна "1". Итак, чтобы придерживаться вашей идеи использовать NSRange (другие ответы, использующие stringByDeletingLastPathComponent, кажется, тоже очень верны), вот как вы могли бы это сделать:

NSRange *range=[myURL rangeOfString:@"/" options:NSBackwardsSearch];
NSString *test = [myURL stringByReplacingCharactersInRange:NSMakeRange(range.location,test.length-range.location) withString:@""];
...