13

我正在尝试仅删除 url 的最后一部分,它是一个 FTP URL。

假设我有一个类似的 URL: > ftp://ftp.abc.com/public_html/somefolder/。删除最后一部分后,我应该将其设置为:ftp://ftp.abc.com/public_html/

我试过使用stringByDeletingLastPathComponenetand URLByDeletingLastPathComponent,但他们没有正确删除最后一部分。它们改变了 url 的整体外观。

例如,使用上述方法后,这是我得到的 URL 格式 ftp:/ftp.abc.com/public_html/。它删除了“ftp://”中的一个“/”,这使我的程序崩溃。

如何在不影响 URL 其余部分的情况下仅删除最后一部分?

更新:

NSURL * stringUrl = [NSURL URLWithString:string];
NSURL * urlByRemovingLastComponent = [stringUrl URLByDeletingLastPathComponent];
NSLog(@"%@", urlByRemovingLastComponent);

使用上面的代码,我得到的输出是:- ftp:/ftp.abc.com/public_html/

4

3 回答 3

20

唔。鉴于上述输入,URLByDeletingLastPathComponent 可以完美运行。

NSURL *url = [NSURL URLWithString:@"ftp://ftp.abc.com/public_html/somefolder/"];
NSLog(@"%@", [url URLByDeletingLastPathComponent]);

返回

ftp://ftp.abc.com/public_html/

您是否有一些示例代码会产生不正确的结果?

最大限度

于 2013-05-11T05:27:26.333 回答
2

现在试试

    NSString* filePath = @"ftp://ftp.abc.com/public_html/somefolder/.";

    NSArray* pathComponents = [filePath pathComponents];
    NSLog(@"\n\npath=%@",pathComponents);
    if ([pathComponents count] > 2) {
            NSArray* lastTwoArray = [pathComponents subarrayWithRange:NSMakeRange([pathComponents count]-2,2)];
            NSString* lastTwoPath = [NSString pathWithComponents:lastTwoArray];
             NSLog(@"\n\nlastTwoArray=%@",lastTwoPath);

            NSArray *listItems = [filePath componentsSeparatedByString:lastTwoPath];
            NSLog(@"\n\nlist item 0=%@",[listItems objectAtIndex:0]);

     }


output

path=(
      "ftp:",
      "ftp.abc.com",
      "public_html",
      somefolder,
      "."
      )

lastTwoArray =somefolder/.

list item 0 =ftp://ftp.abc.com/public_html/
于 2013-05-11T05:40:22.607 回答
1

如何提取 NSURL 的最后一部分的示例。在这种情况下,文件的位置。Sqlite核心数据

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreAPI.sqlite"];

NSString *localPath = [storeURL absoluteString];

NSArray* pathComponents = [localPath pathComponents];

NSLog(@"%@",[pathComponents objectAtIndex:6]);

NSString * nombre = [NSString stringWithFormat:@"%@", [pathComponents objectAtIndex:6]];

此代码返回文件 CoreAPI.sqlite 的名称

于 2014-06-06T16:45:38.760 回答