iOS: Supprimez <img …> de NSSsortingng (une string html)

J'ai donc un NSSsortingng qui est fondamentalement une string html avec tous les éléments html habituels. La chose spécifique que je voudrais faire est de le retirer de toutes les balises img . Les balises img peuvent ou non avoir une largeur maximale, un style ou d'autres attributes, donc je ne connais pas leur longueur à l'avant. Ils finissent toujours par />

Comment pourrais-je faire ça?

EDIT: Basé sur la réponse de nicolasthenoz , j'ai trouvé une solution qui nécessite less de code:

 NSSsortingng *HTMLTagss = @"<img[^>]*>"; //regex to remove img tag NSSsortingng *ssortingngWithoutImage = [htmlSsortingng ssortingngByReplacingOccurrencesOfRegex:HTMLTagss withSsortingng:@""]; 

Vous pouvez utiliser la méthode NSSsortingng ssortingngByReplacingOccurrencesOfSsortingng avec l'option NSRegularExpressionSearch :

 NSSsortingng *result = [html ssortingngByReplacingOccurrencesOfSsortingng:@"<img[^>]*>" withSsortingng:@"" options:NSCaseInsensitiveSearch | NSRegularExpressionSearch range:NSMakeRange(0, [html length])]; 

Ou vous pouvez également utiliser la méthode NSRegularExpression de NSRegularExpression . Ainsi, en supposant que vous ayez votre code html dans un NSMutableSsortingng *html , vous pouvez:

 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<img[^>]*>" options:NSRegularExpressionCaseInsensitive error:nil]; [regex replaceMatchesInSsortingng:html options:0 range:NSMakeRange(0, html.length) withTemplate:@""]; 

Je me pencherais personnellement vers l'une de ces options sur la méthode ssortingngByReplacingOccurrencesOfRegex de RegexKitLite . Il n'est pas nécessaire d'introduire une bibliothèque tierce pour quelque chose d'aussi simple que cela, à less qu'il y ait un autre problème majeur.

Utilisez une expression régulière, trouvez les matchs dans votre string et supprimez-les! Voici comment

 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<img[^>]*>" options:NSRegularExpressionCaseInsensitive error:nil]; NSMutableSsortingng* mutableSsortingng = [yourSsortingngToSsortingpFrom mutableCopy]; NSInteger offset = 0; // keeps track of range changes in the ssortingng due to replacements. for (NSTextCheckingResult* result in [regex matchesInSsortingng:yourSsortingngToSsortingpFrom options:0 range:NSMakeRange(0, [yourSsortingngToSsortingpFrom length])]) { NSRange resultRange = [result range]; resultRange.location += offset; NSSsortingng* match = [regex replacementSsortingngForResult:result inSsortingng:mutableSsortingng offset:offset template:@"$0"]; // make the replacement [mutableSsortingng replaceCharactersInRange:resultRange withSsortingng:@""]; // update the offset based on the replacement offset += ([replacement length] - resultRange.length); }