Zijn er sneltoetsen voor (stringByAppendingString:
) string aaneenschakeling in Objective-C, of sneltoetsen voor het werken met NSString
in het algemeen?
Bijvoorbeeld, ik wil graag maken:
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
iets meer als:
string myString = "This";
string test = myString + " is just a test";
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];
Ik neem aan dat je niet blij bent met meerdere appends (a+b+c+d), in welk geval je zou kunnen doen:
NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one
met iets als
+ (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;
}
Ik kan twee antwoorden bedenken... geen van beide is zo aangenaam als gewoon een aaneenschakelingsoperator.
Ten eerste, gebruik een NSMutableString
, die een appendString
methode heeft, waardoor er geen extra tijdelijke strings meer nodig zijn.
Ten tweede, gebruik een NSArray
om aan elkaar te plakken via de componentsJoinedByString
methode.