我想与+[NSString stringWithFormat:]
建立了一个NSString
内成员的范围。什么是解析objective-c格式字符串的最佳方法?由于%@
,我不能只使用C格式的字符串解析器。我还需要确保它支持的格式排序:%1$d
,%[email protected]
等解析Objective-C printf格式字符串?
例如,与[NSString stringWithFormat:@"foo %[email protected] bar %[email protected]", @"Heath", @"Borders"]
内置的字符串,我会非常喜欢以下NSArray
:@[NSMakeRange(15, 5), NSMakeRange(4, 6)]
。第一阵列对象对应于格式字符串中的第一个数据元素,所述第二阵列对象到第二数据元素等
在这种情况下,该API将看起来像+ (NSString *) stringWithFormatRanges:(NSArray **)outFormatRanges withFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
这将返回一个NSString
就像+[NSString stringWithFormat:]
,但它也会返回NSArray
与各格式数据元素的NSRange
。
- 编辑 -
考虑到这个问题,今年3岁,我很高兴在这一点仅C-实现。
解析你的具体要求是什么......请解释一下。 –
你是什么意思“成员范围?”你是否想要解析“%@”,“%1 $ d”和“%2 $ @”这样的子字符串? – trudyscousin
我想你会首先提取单个格式的项目,也许用RE,然后编写代码来检查它们并对它们进行分类。 –