32

I have a URL

http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg

I want to extract the file name which is "honda_v4_concept_widescreen_bike-wide.jpg"

How can I can do this?

Mike Abdullah
  • 14,933
  • 2
  • 50
  • 75
farisolusa
  • 366
  • 1
  • 3
  • 10

4 Answers4

56

The code below should work. Updated it so I removed the top statement. I could've used NSString vs const char * or std::string from C++ but thought C Character Pointers would be quite appropriate for this case in point.

Also revamped this so it's in it's own concise function:

-(NSString*) extractFile:(const char*) url 
{
    NSURL *yourURL = [NSURL URLWithString:
                     [NSString stringWithCString:url 
                                 encoding:NSUTF8StringEncoding]];
    return [yourURL lastPathComponent];
}

to use:

const char *path_ = "http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg";
NSLog(@"\t\tYour Extracted file: \n\t%@", [self extractFile:path_]);
apollosoftware.org
  • 12,161
  • 4
  • 48
  • 69
3

Swift 3:

let urlString = "http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg"
if let url = URL(string: urlString) {
  print("file name: \(url.lastPathComponent)")
} else {
  print("error - not a valid url!")
}
budiDino
  • 13,044
  • 8
  • 95
  • 91
1

The code below works. absoluteString is recommended in another answer, but it doesn't work correctly if there are (e.g.) spaces in the filename.

NSString *JPEGfilename = [[yourURL path] lastPathComponent];
Nestor
  • 2,753
  • 2
  • 29
  • 34
-4

simply use basename basename() function

$url = http://www.fullhdwallpapers.in/wp-content/uploads/2017/01/Logan-Movie-Kid-2017-680x425.jpg

echo basename($url); 
Jaap
  • 81,064
  • 34
  • 182
  • 193
  • 1
    This appears to be PHP – the author specifies that they have a `NSURL` which implies that they'd like an answer in Swift or Objective-C. – Josh Oct 14 '17 at 04:34