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);它会返回一个NSStringjust like +[NSString stringWithFormat:],但它也会返回每个格式数据元素的一个NSArraywith NSRanges。
- 编辑 -
鉴于这个问题已经存在 3 年了,此时我对仅 C 的实现感到满意。