浅析Simple template engine for objective c
所谓template engine就是我们可以先定义一个template
例如一个html档案
然后我们会希望把裡面少部分的片段透过程式去取代成我们想要的字串
而做这些取代动作的东西我们就称作template engine
其实在iOS当中已经有一个非常简单的template engine了,
也就是+[NSString stringWithFormat:(NSString *)format, …]
这东西就很像在c使用sprintf(...)
然而,这东西对大部份来时候来讲都很好用,但是也有一些限制,
例如它必需要要一个萝卜一个坑 (传进的参数就是对应到format中的每个%开头的取代标示)
你不能要求一个萝卜两个坑 (一个参数取代两个取代标示)
甚至第一个萝卜一定要放在第一个坑 (第一个参数一定要放在第一个取代标示)
我查了一下stackoverflow
但是没有找到我想要的答案
得到的答案不外乎就是这几个
1. 用上面提的+[NSString stringWithFormat:(NSString *)format, …]
2. 用-[NSString stringByReplacingOccurrencesOfString:withString:]
然后一个一个把取代标示换成我们要的字串
3. 不然就是给我一个非常强大的template engine..
其实这东西不难做,既然我们都已经有好用的NSScanner了,那我们就做一个简单的template engine吧。
使用上我希望长这样
NSString* testTemplate = @"Hello $[name], welcome to $[city].";
NSString* testString =
[NSString stringWithTemplate:testTemplate
fromMap:[NSDictionary dictionaryWithObjectsAndKeys:
@"Popcorny", @"name"
@"Taipei", @"city",
nil]];
NSLog(@"%@", testString); // output: Hello Popcorny, welcome to changsha."
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
