Этот код взломан, но, кажется, выдает желаемый результат.
Он не был протестирован с неожиданными данными (строка не в описанной форме, ноль строка ...), но должен помочь вам начать работу.
- (NSString *)stringByStrippingQuottedSubstring:(NSString *) stringToClean
{
NSString *strippedString,
*strippedString2;
NSScanner *scanner = [NSScanner scannerWithString:stringToClean];
[scanner scanUpToString:@"\"" intoString:&strippedString]; // Getting first part of the string, up to the first quote
[scanner scanUpToString:@"\" " intoString:NULL]; // Scanning without caring about the quoted part of the string, up to the second quote
strippedString2 = [[scanner string] substringFromIndex:[scanner scanLocation]]; // Getting remainder of the string
// Having to trim the second part of the string
// (Cf. doc: "If stopString is present in the receiver, then on return the scan location is set to the beginning of that string.")
strippedString2 = [strippedString2 stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\" "]];
return [strippedString stringByAppendingString:strippedString2];
}
Я вернусь (намного) позже, чтобы почистить его и углубиться в документацию класса NSScanner, чтобы выяснить, чего мне не хватает, и мне пришлось позаботиться о ручной обрезке струн.