在Objective-C中有没有(stringByAppendingString:)字符串连接的快捷方式,或者一般使用NSString的快捷方式?
例如,我想做:
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
更像是:
string myString = "This";
string test = myString + " is just a test";
这样使用stringByAppendingString:
NSString *string1, *string2, *result;
string1 = @"This is ";
string2 = @"my string.";
result = [result stringByAppendingString:string1];
result = [result stringByAppendingString:string2];
OR
result = [result stringByAppendingString:@"This is "];
result = [result stringByAppendingString:@"my string."];
受Chris的NSMutableString想法的启发,我做了一个完美的宏。
它支持插入nil元素,没有任何异常。
#import <libextobjc/metamacros.h>
#define STR_CONCAT(...) \
({ \
__auto_type str__ = [NSMutableString string]; \
metamacro_foreach_cxt(never_use_immediately_str_concatify_,, str__, __VA_ARGS__) \
(NSString *)str__.copy; \
})
#define never_use_immediately_str_concatify_(INDEX, CONTEXT, VAR) \
[CONTEXT appendString:VAR ?: @""];
例子:
STR_CONCAT(@"button_bg_", @(count).stringValue, @".png");
// button_bg_2.png
如果你喜欢,你可以使用id类型作为参数使用[VAR description]而不是NSString。
正在尝试在lldb窗格中执行以下操作
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
这错误。
而是使用alloc和initWithFormat方法:
[[NSString alloc] initWithFormat:@"%@/%@/%@", @"three", @"two", @"one"];