Cómo agregar una cadena en otra cadena en el objective c iphone

Estoy trabajando con un set de imágenes que contienen imágenes con extensiones jpg, png y gif. Necesito agregar una cadena @ "- Agregar" a cada image en una matriz justo antes de la extensión. Cómo puedo lograr esto. Por ejemplo: tengo una image DSC004.jpg y quiero agregar la cadena "-Add", para que mi nombre de image se convierta en DSC004-Add.jpg. ?????

Pensé en eliminar la extensión, anexando la cadena requerida y luego añadiendo otra vez la extensión. Pero mi set de imágenes tiene una extensión diferente con cada nombre de image. Los LPL me ayudan

La forma más completa y general, pero no la más simple, es algo como esto:

NSString *filename = @"DSC004.jpg"; NSString *ext = [filename pathExtension]; NSString *basename = [filename stringByDeletingPathExtension]; NSString *updated = [basename stringByAppendingString:@"-Add"]; NSString *finalName = [updated stringByAppendingPathExtension:ext]; 

Este enfoque funciona con nombres de ruta completos o nombres de files y files con múltiples períodos en el nombre.

 NSString *str = @"ajdgl.jpg"; NSArray *arr = [str componentsSeparatedByString:@"."]; NSString *newStr = [NSString stringWithFormat:@"%@-add%@",[arr objectAtIndex:0],[arr objectAtIndex:1]]; 
  NSString *str = @"ajdgl.jpg"; NSArray *array = [str componentsSeparatedByString:@"."]; NSString *newStr; for (int i=0; i<[array count]-1; i++) { newStr = [NSString stringWithFormat:@"%@.%@",newStr,[array objectAtIndex:i]]; } NSString *UpdatedName = [NSString stringWithFormat:@"%@-add.%@",newStr,[array objectAtIndex:[array count]-1]]; 

Aquí primero concatará toda la cadena anterior y el punto (.) También … Esto lo hará con cualquier número de puntos. entre tu nombre de image …

 NSString *newString = [@"DSC004.jpg" stringByReplacingOccurrencesOfString:@"." withString:@"-Add."]; 
 NSString *original=@"DSC004.jpg"; NSString *target=[original stringByReplacingOccurrencesOfString:@"'.'" withString:@"-Add."]; 

Intenta esto y avísame a mi amigo …

Happy Coding !! 1

Puede usar el siguiente código si su nombre de file es como some.jpg :

 NSString *newString = [@"DSC004.jpg" stringByReplacingOccurrencesOfString:@"." withString:@"-Add."]; 

Si es como some.some.jpg use:

 NSArray *arrayString = [fileName componentsSeparatedByString:@"."]; NSMutableArray *mutableArray = [NSMutableArray arrayWithArray: arrayString]; int arrayCount = [arrayString count]; NSString *newStr = nil; if(arrayCount>=2) { NSString *tempStr = [arrayString objectAtIndex:arrayCount-2]; tempStr = [tempStr stringByAppendingString:@"-Add"]; [mutableArray replaceObjectAtIndex:arrayCount-2 withObject:tempStr]; newStr = [mutableArray componentsJoinedByString:@"."]; NSLog(@"%@",newStr); } else { newStr = [fileName stringByAppendingString:@"-Add"]; } 

usted puede ir con este también:

 NSError *error= NULL; NSString *myString = @"DSC004.jpg"; NSMutableString *tempStr =[[NSMutableString alloc] initWithString:myString]; NSRegularExpression *regex =[NSRegularExpression regularExpressionWithPattern:@"(\\..{3})$" options:NSMatchingReportCompletion error:&error]; [regex replaceMatchesInString:tempStr options:NSMatchingReportCompletion range:NSMakeRange(0,[myString length]) withTemplate:@"-Add$0"]; NSLog(@"%@",tempStr); 

Aquí, el motor de expresiones regulares busca el patrón <dot> followed by three characters y lo guarda en $0 luego lo reemplaza con -Add followed by saved value(match) in $0

Espero que también lo ayude!