【问题标题】:Objective-C: Substring and replaceObjective-C:子串和替换
【发布时间】:2012-01-03 02:13:12
【问题描述】:

我有一个NSString,它是一个 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 应该被删除。 于是我试着找了NSRangetestfolder,用空字符串代替。

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

【问题讨论】:

    标签: objective-c replace nsstring substring nsrange


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

      【解决方案2】:

      你可以把它变成一个网址并使用-[NSURL URLByDeletingLastPathComponent]

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

      【讨论】:

      • 在这个版本中,结束斜线仍然存在,而不是使用stringByDeletingLastPathComponent的解决方案。
      【解决方案3】:

      您不能使用 [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:@""];
      

      【讨论】:

        猜你喜欢
        • 2011-07-28
        • 1970-01-01
        • 2010-10-14
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多