NSString问题

Bil*_*iff 2 iphone cocoa-touch nsstring

我有一个NSString被赋予一个字符串值.如何在文件名和扩展名之间NSString插入并插入@"-thumbnail"?

换句话说,我该怎么做:

NSString *fileName = @"myFile.png";
Run Code Online (Sandbox Code Playgroud)

至:

NSString *thumbnailName = [NSString someMagicFunction...]
NSLog(@"%@", thumbnailName);  // Should Output "myFile-thumbnail.png"
Run Code Online (Sandbox Code Playgroud)

e.J*_*mes 11

路径组件的NSString添加可以派上用场,特别是:pathExtension和stringByDeletingPathExtension

编辑:另见: stringByAppendingPathExtension :(由 Dave DeLong指出)

NSString * ext = [fileName pathExtension];
NSString * baseName = [fileName stringByDeletingPathExtension];
NSString * thumbBase = [baseName stringByAppendingString:@"-thumbnail"];
NSString * thumbnailName = [thumbBase stringByAppendingPathExtension:ext];
Run Code Online (Sandbox Code Playgroud)

如果你真的希望它magicFunction存在,你可以像这样向NSString添加一个类别方法:

@interface NSString (MoreMagic)
- (NSString *)stringByAddingFileSuffix:(NSString *)suffix;
@end

@implementation NSString (MoreMagic)
- (NSString *)stringByAddingFileSuffix:(NSString *)suffix
{
    NSString * extension = [self pathExtension];
    NSString * baseName = [self stringByDeletingPathExtension];
    NSString * thumbBase = [baseName stringByAppendingString:suffix];
    return [thumbBase stringByAppendingPathExtension:extension];
}
@end
Run Code Online (Sandbox Code Playgroud)

使用如下:

NSString * thumbnailName = [fileName stringByAddingFileSuffix:@"-thumbnail"];
Run Code Online (Sandbox Code Playgroud)