Quel est le moyen le plus simple d'ajouter un suffixe à un nom de fichier avant l'extension dans Objective-C?Ajouter un suffixe au nom du fichier avant l'extension
Exemple
- Nom original:
image.png
- Suffixe:
~ipad
- Résultat:
image~ipad.png
Quel est le moyen le plus simple d'ajouter un suffixe à un nom de fichier avant l'extension dans Objective-C?Ajouter un suffixe au nom du fichier avant l'extension
Exemple
image.png
~ipad
image~ipad.png
NSString
a tout un tas de méthodes liées à la route:
NSString * appendSuffixToPath(NSString * path, NSString * suffix) {
NSString * containingFolder = [path stringByDeletingLastPathComponent];
NSString * fullFileName = [path lastPathComponent];
NSString * fileExtension = [fullFileName pathExtension];
NSString * fileName = [fullFileName stringByDeletingPathExtension];
NSString * newFileName = [fileName stringByAppendingString:suffix];
NSString * newFullFileName = [newFileName stringByAppendingPathExtension:fileExtension];
return [containingFolder stringByAppendingPathComponent:newFullFileName];
}
(Oui, vous pouvez le faire avec beaucoup moins de variables, mais je voulais préciser ce que chaque méthode a été fait)
La solution ci-dessus ne fonctionnerait pas pour le nom de fichier tels que ../filename. pvr.ccz
J'ai pincé un peu pour tenir compte de plusieurs extensions de nom de fichier:
-(NSString *)appendSuffixToPath:(NSString *)pPath withSuffix:(NSString *)pSuffix {
NSString * containingFolder = [pPath stringByDeletingLastPathComponent];
NSString * fullFileName = [pPath lastPathComponent];
NSMutableArray *extensions = [[NSMutableArray alloc] init];
NSString * fileExtension = [fullFileName pathExtension];
[extensions addObject:fileExtension];
NSString * fileName = [fullFileName stringByDeletingPathExtension];
while([fileName pathExtension].length > 0){
fileExtension = [fileName pathExtension];
[extensions addObject:fileExtension];
fileName = [fileName stringByDeletingPathExtension];
}
NSString * newFileName = [fileName stringByAppendingString:pSuffix];
NSString * newFullFileName = newFileName;
while ([extensions count] > 0) {
newFullFileName = [newFullFileName stringByAppendingPathExtension:[extensions objectAtIndex:((int)[extensions count] - 1)]];
[extensions removeObjectAtIndex:((int)[extensions count] - 1)];
}
NSString *result = [containingFolder stringByAppendingPathComponent:newFullFileName];
return result;
}
sais que c'est vieux mais pensé que quelqu'un peut aimer cette solution Swift
extension String {
func appendSuffixBeforeExtension(suffix: String) -> String {
let regex = NSRegularExpression(pattern: "(\\.\\w+$)", options: nil, error: nil)
return regex!.stringByReplacingMatchesInString(self, options: nil, range: NSMakeRange(0, count(self)), withTemplate: "\(suffix)$1")
}
}
appeler ensuite comme si
let mytxt = "/somepath/file.jpg"
let retina = mytxt.appendSuffixBeforeExtension("@x2")
Merci Dave! Je pensais qu'il y avait quelque chose comme stringByDeletingPathExtension disponible dans Obj-C. – hpique