微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解析Objective-C printf格式字符串?

我想使用[Nsstring stringWithFormat:]构建的Nsstring中的成员范围.解析 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 *)格式,NS_FORMAT_FUNCTION(1,2);它将返回一个Nsstring就像[Nsstring stringWithFormat:],但它也将返回一个NSArray与每个格式数据元素的NSRanges.

– 编辑 –

鉴于这个问题是3岁,我很高兴在这一点上实施C-only.

解决方法

我在几年前就研究了这个.如果我明白你的问题,没有简单的方法可以从C或 Cocoa格式字符串的格式字符串中获取AST.

我写了NSXMLElement elementWithXMLFormat,它允许将NSXMLElements的非转义插入到一个格式字符串中,并带有特殊的%%% @格式代码,这需要扩展Cocoa的格式.我的技术可能对你有帮助:

https://github.com/rentzsch/nsxmlelement-elementwithxmlformat/blob/937b54b2a830a8fbbd72d6bc5e48bafd495ddcbd/NSXMLElement%2BelementWithXMLFormat.m#L41

提取和NUL分隔只是格式代码,运行它通过传统然后重新组合.

原文地址:https://www.jb51.cc/c/114671.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐