Я хочу получить диапазоны членов внутри NSString
, построенных с помощью +[NSString stringWithFormat:]
. Каков наилучший способ разбора строки формата objective-c? Я не могу просто использовать синтаксический синтаксический анализатор формата C из-за %@
. Я также должен убедиться, что он поддерживает порядок форматирования: %1$d
, %[email protected]
и т.д.
Например, с строкой, построенной с помощью [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
каждого элемента данных формата.
- EDIT -
Учитывая, что этот вопрос составляет 3 года, я был бы доволен реализацией C-only на этом этапе.