NSString
我想获得内置的成员范围+[NSString stringWithFormat:]
。解析objective-c格式字符串的最佳方法是什么?我不能只使用 C 格式字符串解析器,因为%@
. 我还需要确保它支持格式排序:%1$d
、、%2$@
等。
例如,对于用 构建的字符串[NSString stringWithFormat:@"foo %2$@ bar %1$@", @"Heath", @"Borders"]
,理想情况下我会喜欢以下内容NSArray
:@[NSMakeRange(15, 5), NSMakeRange(4, 6)]
。第一个数组对象对应于格式字符串中的第一个数据元素,第二个数组对象对应于第二个数据元素,依此类推。
在这种情况下,API 看起来像+ (NSString *) stringWithFormatRanges:(NSArray **)outFormatRanges withFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
它会返回一个NSString
just like +[NSString stringWithFormat:]
,但它也会返回每个格式数据元素的一个NSArray
with NSRange
s。
- 编辑 -
鉴于这个问题已经存在 3 年了,此时我对仅 C 的实现感到满意。