我想與+[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,然後編寫代碼來檢查它們並對它們進行分類。 –