2011-11-10 9 views
9

Mam ścieżkę pliku, na przykład /Users/Documents/New York/SoHo/abc.doc. Teraz muszę po prostu pobrać /SoHo/abc.doc z tej ścieżki.Uzyskiwanie 2 ostatnich katalogów ścieżki pliku

I przeszły następujące:

  • stringByDeletingPathExtension -> służy do usuwania rozszerzenia ze ścieżki.
  • stringByDeletingLastPathComponent -> aby usunąć ostatnią część w części.

Jednak nie znalazłem żadnej metody, aby usunąć pierwszą część i zachować dwie ostatnie części ścieżki.

Odpowiedz

0

Dlaczego nie szukać znaków "/" i nie określać ścieżek w ten sposób?

2
  1. Podziel łańcuch na komponenty, wysyłając wiadomość o numerze pathComponents.
  2. Usuń wszystkie oprócz dwóch ostatnich obiektów z wynikowej tablicy.
  3. złączyć dwa elementy ścieżki razem w jeden ciąg z +pathWithComponents:
3

Pisałem funkcję specjalnego dla Ciebie:

- (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; 
} 

Wystarczy zadzwonić:

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

NSString ma mnóstwo metod obsługi ścieżek, których wstyd byłoby nie używać ...

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 = // GET Path;

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 (@ "Dwa ostatnie składniki =% @", theLastTwoComponentOfPath);

Powiązane problemy