2

我有一个长字符串,我想从 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"];
4

1 回答 1

4

你所描述的是一个模板。您希望将占位符留在将用数据填充的字符串中。虽然您可以通过字符串使用 %@ 和 %d ,但随着字符串变得越来越复杂,这会变得很困难。您可能想要使用像Mustache之类的模板库for Objective-C。这将使您可以编写如下表达式:

Hello {{SomeVariable}}

您所要做的就是传入NSDictionary与您要呈现的数据相对应的 with 键。因此,对于上面的示例,您可以执行以下操作:

NSString *result = [GRMustacheTemplate renderObject:[NSDictionary dictionaryWithObject:@"World" forKey:@"SomeVariable"];
                                         fromString:@"Hello {{SomeVariable}}"
                                              error:NULL];

这将产生一个result字符串Hello World

于 2012-06-01T00:47:59.123 回答