需求:文件名 DSC004.jpg → 在擴展名前插入 -Add → DSC004-Add.jpg。需處理多點文件名(如 image.v1.2.png)。
NSString *filename = @"DSC004.jpg";
NSString *ext = [filename pathExtension]; // "jpg"
NSString *base = [filename stringByDeletingPathExtension]; // "DSC004"
NSString *newBase = [base stringByAppendingString:@"-Add"]; // "DSC004-Add"
NSString *result = [newBase stringByAppendingPathExtension:ext]; // "DSC004-Add.jpg"
pathExtension 語義)。.gitignore)、多層擴展名(.tar.gz 視為 gz)。NSString *result = [filename stringByReplacingOccurrencesOfString:@"\\.([^.]+)$"
withString:@"-Add.$1" options:NSRegularExpressionSearch range:NSMakeRange(0, filename.length)];
缺點:需轉義、邊界情況複雜(無擴展名、以點結尾等)。
NSArray *files = @[@"a.jpg", @"b.png", @"c.v2.gif"];
NSMutableArray *results = [NSMutableArray array];
for (NSString *f in files) {
NSString *ext = [f pathExtension];
NSString *base = [f stringByDeletingPathExtension];
[results addObject:[[base stringByAppendingString:@"-Add"] stringByAppendingPathExtension:ext]];
}
善用 NSString 路徑操作族,優雅解決文件名手術問題。