Desidero ottenere gli intervalli di membri all'interno di uno NSString
creato con +[NSString stringWithFormat:]
. Qual è il modo migliore per analizzare la stringa di formato obiettivo-c? Non riesco a utilizzare un parser di stringa in formato C a causa di %@
. Ho anche bisogno di fare in modo che supporta ordinamenti formato: %1$d
, %[email protected]
, eccParse Objective-C stringhe di formato printf?
Ad esempio, con la stringa costruita con [NSString stringWithFormat:@"foo %[email protected] bar %[email protected]", @"Heath", @"Borders"]
, Vorrei idealmente come il seguente NSArray
: @[NSMakeRange(15, 5), NSMakeRange(4, 6)]
. Il primo oggetto matrice corrisponde al primo elemento di dati nella stringa di formato, il secondo oggetto matrice al secondo elemento di dati, ecc
In questo caso, l'API sarebbe simile + (NSString *) stringWithFormatRanges:(NSArray **)outFormatRanges withFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
Sarebbe restituire un NSString
come +[NSString stringWithFormat:]
, ma restituirebbe anche un NSArray
con NSRange
s di ciascun elemento di dati di formato.
- EDIT -
Dato che la questione è di 3 anni, sarei felice con un'implementazione C-solo a questo punto.
Analizzare come, qual è il tuo esatto requisito ... per favore spiega. –
Cosa intendi per "intervalli di membri?" Stai dicendo di voler analizzare sottostringhe come "% @", "% 1 $ d" e "% 2 $ @"? – trudyscousin
Penso che prima dovresti estrarre i singoli elementi di formato, magari con i RE, quindi scrivere il codice per ispezionarli e classificarli. –