2012-06-01 32 views
2

我有一個很長的字符串,我想從URL中檢索並在應用程序啓動時存儲。稍後,我想將單個值插入該字符串中。在NSString中保存字符串格式說明符(%@,%d等)以供將來佔位符使用?

我想要做這樣的事情:

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"]; 
+2

現在還不清楚 - 你的第一個方案工作得很好。除此之外,你還想完成什麼? –

+0

Arg,你說得對。我可以發誓我的原始問題沒有奏效,儘管這是一個更大的文本字符串。也許我在那裏有另一個錯誤。 – cksubs

回答

4

你所描述的是一個模板。您希望將佔位符留在將填寫數據的字符串中。雖然可以通過一個字符串使用%@和%d,但隨着字符串變得越來越複雜,字符串變得越來越困難。您可能想要使用Mustache這樣的模板庫,用於Objective-C。這將讓你寫的表達式是這樣的:

Hello {{SomeVariable}} 

所有你需要做的在NSDictionary的是通過與對應於要呈現的數據鍵。因此,對於你上面的例子可以做到以下幾點:

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

這將產生一個resultHello World

相關問題