完全な文字列から特定の文字列を取得する方法。
例: 以下のような完全な文字列があります。
"http://serverurl.com/mediadata/Album.wav";
上記の文字列から「Album.wav」を取得する必要があります。名前は URL 文字列によって異なります。入手方法は?
ありがとう。
完全な文字列から特定の文字列を取得する方法。
例: 以下のような完全な文字列があります。
"http://serverurl.com/mediadata/Album.wav";
上記の文字列から「Album.wav」を取得する必要があります。名前は URL 文字列によって異なります。入手方法は?
ありがとう。
パス コンポーネントを使用できます。
NSString fileName = [URLstring lastPathComponent];
rangeOfString で始まる NSString クラスのメソッドを使用することもできます。
- (NSRange)rangeOfString:(NSString *)aString;
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange;
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(NSLocale *)locale;
おそらく NSScanner を使用して、4 番目のスラッシュまでスキャンする必要があります。スキャン後に残ったものが、必要な文字列になります。
編集済み
ただし、リチャードが言ったように、URLが変更されない場合は、NSStringがファイルパスを解析するため、単純なパスコンポーネントが機能します。例を示します。
NSArray *urlStrings = [NSArray arrayWithObjects:@"http://serverurl.com/mediadata/Album.wav",
@"http://serverurl.com/mediadata/NewAlbum.wav",
@"http://serverurl.com/mediadata/OtherAlbum.mp3", nil];
for (NSString *url in urlStrings) {
NSLog(@"%@",[url lastPathComponent]);
}
出力
2012-04-15 09:01:15.878 NSScanner[6448:f803] Album.wav
2012-04-15 09:01:15.880 NSScanner[6448:f803] NewAlbum.wav
2012-04-15 09:01:15.881 NSScanner[6448:f803] OtherAlbum.mp3