Objective-C:子串和替换

时间:2011-11-21 15:30:16

标签: objective-c replace nsstring substring nsrange

我有NSString这是一个网址。需要删除此网址:

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

我有这个网址http://www.test.com/folder/testfolder,我希望test变量的值为http://www.test.com/folder/,因此应该删除testfolder。 所以我试图找到NSRange testfolder来用空字符串替换它。

但它不起作用。我做错了什么?

3 个答案:

答案 0 :(得分:3)

试试这个:

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

你应该得到> http://www.test.com/folder/

答案 1 :(得分:3)

您可以将其转换为网址并使用-[NSURL URLByDeletingLastPathComponent]

NSString *myURLString = @"http://www.test.com/folder/testfolder";
NSURL *myURL = [NSURL URLWithString:myURLString];
myURL = [myURL URLByDeletingLastPathComponent];
myURLString = [myURL absoluteString];

答案 2 :(得分:0)

您不能使用[myURL rangeOfString:@“/”options:NSBackwardsSearch]返回的NSRange,因为它的长度为“1”。因此,为了保持使用NSRange的想法(使用stringByDeletingLastPathComponent的其他回复似乎也非常有效),以下是您可以这样做的方法:

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