2011-11-10 43 views
9

Tôi có đường dẫn tệp, ví dụ: /Users/Documents/New York/SoHo/abc.doc. Bây giờ tôi cần truy xuất /SoHo/abc.doc từ đường dẫn này.Lấy 2 thư mục cuối cùng của đường dẫn tệp

Tôi đã trải qua những điều sau đây:

  • stringByDeletingPathExtension -> sử dụng để xóa các phần mở rộng từ con đường.
  • stringByDeletingLastPathComponent -> để xóa phần cuối cùng trong phần.

Tuy nhiên tôi không tìm thấy bất kỳ phương pháp nào để xóa phần đầu tiên và giữ hai phần cuối của đường dẫn.

Trả lời

0

Tại sao không tìm kiếm ký tự '/' và xác định đường dẫn theo cách đó?

2
  1. Chia chuỗi thành các thành phần bằng cách gửi một thông báo pathComponents.
  2. Xóa tất cả trừ hai đối tượng cuối cùng khỏi mảng kết quả.
  3. Tham gia vào hai thành phần đường lại với nhau thành một chuỗi duy nhất với +pathWithComponents:
3

Tôi đã chức năng đặc biệt viết cho bạn:

- (NSString *)directoryAndFilePath:(NSString *)fullPath 
{ 

    NSString *path = @""; 
    NSLog(@"%@", fullPath); 
    NSRange range = [fullPath rangeOfString:@"/" options:NSBackwardsSearch]; 
    if (range.location == NSNotFound) return fullPath; 
    range = NSMakeRange(0, range.location); 
    NSRange secondRange = [fullPath rangeOfString:@"/" options:NSBackwardsSearch range:range]; 
    if (secondRange.location == NSNotFound) return fullPath; 
    secondRange = NSMakeRange(secondRange.location, [fullPath length] - secondRange.location); 
    path = [fullPath substringWithRange:secondRange]; 
    return path; 
} 

Chỉ cần gọi:

[self directoryAndFilePath:@"/Users/Documents/New York/SoHo/abc.doc"]; 
11

NSString có tải của phương pháp xử lý đường dẫn mà nó sẽ là một sự xấu hổ không sử dụng ...

NSString* filePath = // something 

NSArray* pathComponents = [filePath pathComponents]; 

if ([pathComponents count] > 2) { 
    NSArray* lastTwoArray = [pathComponents subarrayWithRange:NSMakeRange([pathComponents count]-2,2)]; 
    NSString* lastTwoPath = [NSString pathWithComponents:lastTwoArray]; 
} 
0

NSString * theLastTwoComponentOfPath; NSString * filePath = // Đường dẫn GET;

NSArray* pathComponents = [filePath pathComponents]; 

    int last= [pathComponents count] -1; 
    for(int i=0 ; i< [pathComponents count];i++){ 

     if(i == (last -1)){ 
      theLastTwoComponentOfPath = [pathComponents objectAtIndex:i]; 
     } 
     if(i == last){ 
      theTemplateName = [NSString stringWithFormat:@"\\%@\\%@", theLastTwoComponentOfPath,[pathComponents objectAtIndex:i] ]; 
     } 
    } 

NSlog (@ "Hai thành phần cuối =% @", theLastTwoComponentOfPath);

Các vấn đề liên quan