1
Pour les fins d'analyse, il était nécessaire de remplacer les virgules dans les quotas avec de l'espace. Je n'ai pas trouvé et trouvé de solution dans la classe NSString et j'ai écrit celui-ci. Il fonctionne, mais je voudrais connaître votre avis, s'il y a approche plus simple:méthode pour remplacer la virgule entre guillemets dans NSString, s'il vous plaît vérifier mon
- (NSString *) replaceBetweenQuotesInString:(NSString*)line {
const char *buffer = [line UTF8String];
NSMutableIndexSet *evenIndexes = [NSMutableIndexSet indexSet];
NSMutableIndexSet *oddIndexes = [NSMutableIndexSet indexSet];
BOOL evenOdd = YES;
for (unsigned int i = 0; i < [line length]; i++) {
if (buffer[i] == '"'){
if (evenOdd)
[evenIndexes addIndex:i];
else
[oddIndexes addIndex:i];
evenOdd = !evenOdd;
}
}
if ([evenIndexes count] != [oddIndexes count])
[evenIndexes removeIndex:[evenIndexes lastIndex]];
int totalRanges = (int) [evenIndexes count];
for (int i = 0; i < totalRanges; i++) {
NSRange range = NSMakeRange([evenIndexes firstIndex], [oddIndexes firstIndex] - [evenIndexes firstIndex]);
[evenIndexes removeIndex:[evenIndexes firstIndex]];
[oddIndexes removeIndex:[oddIndexes firstIndex]];
line = [line stringByReplacingOccurrencesOfString:@"," withString:@" " options:NSLiteralSearch range:range];
}
[evenIndexes removeAllIndexes];
[oddIndexes removeAllIndexes];
return line;
}
Votre code est plus élégant, mais si vous cochez cette chaîne avec un quota ouvert et non fermé, le code supprime toutes les virgules à la fin. NSString * line = @ "\" 1234,5678 \ ", abcd, ohoho \" jkl, deux \ ", un \" ,,, "; – Michael
Vous pouvez vérifier le nombre de composants et si le nombre de chaînes est pair il, le rejeter comme mal formé. – JeremyP