¿Existe algún atajo para la concatenación de cadenas (stringByAppendingString:
) en Objective-C, o atajos para trabajar con NSString
en general?
Por ejemplo, me gustaría hacer:
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
algo más parecido a:
string myString = "This";
string test = myString + " is just a test";
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];
Supongo que no estás contento con los apéndices múltiples (a+b+c+d), en cuyo caso podrías hacer
NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one
usando algo como
+ (NSString *) append:(id) first, ...
{
NSString * result = @"";
id eachArg;
va_list alist;
if(first)
{
result = [result stringByAppendingString:first];
va_start(alist, first);
while (eachArg = va_arg(alist, id))
result = [result stringByAppendingString:eachArg];
va_end(alist);
}
return result;
}
Se me ocurren dos respuestas... ninguna es especialmente agradable como tener un operador de concatenación.
En primer lugar, utilizar un NSMutableString
, que tiene un método appendString
, eliminando parte de la necesidad de cadenas temporales adicionales.
En segundo lugar, utiliza un NSArray
para concatenar a través del método componentsJoinedByString
.