>我有一个很长的字符串,我想从URL中检索并在应用程序启动时存储。稍后,我想在该字符串中插入单个值。
我想做这样的事情:
NSString *numberLine = @"1 %@ 3 %@ 5 %@";
//... (later) ...
NSString *final = [NSString stringWithFormat:numberLine, @"two", @"four", @"six"];
NSLog(@"%@", final); //Should output "1 two 3 four 5 six"
我希望将@"two"
插入到占位符中,%@
之前保存到numberLine
中。
有没有完成这样的事情的好方法?
到目前为止,我唯一的想法是做这样的事情:
NSString *script = @"width = PLACEHOLDERpx";
script = [script stringByReplacingOccurrencesOfString:@"PLACEHOLDER" withString:@"12"];
你描述的是一个模板。您希望将占位符保留在将用数据填充的字符串中。虽然您可以通过字符串使用 %@ 和 %d,但随着字符串变得越来越复杂,这变得越来越困难。你可能想使用像Mustache这样的模板库来实现Objective-C。这将允许您编写如下表达式:
Hello {{SomeVariable}}
您所要做的就是使用与要呈现的数据对应的键传入一个NSDictionary
。因此,对于上面的示例,您可以执行以下操作:
NSString *result = [GRMustacheTemplate renderObject:[NSDictionary dictionaryWithObject:@"World" forKey:@"SomeVariable"];
fromString:@"Hello {{SomeVariable}}"
error:NULL];
这将生成一个result
字符串Hello World
。