2012-09-19 12 views
8

तो मेरे पास NSString है जो मूल रूप से html स्ट्रिंग के साथ html स्ट्रिंग है। मैं जिस विशिष्ट चीज को करना चाहता हूं वह है जो इसे सभी img टैग से हटा दें। img टैग अधिकतम चौड़ाई, शैली या अन्य विशेषताएँ हो सकती है या नहीं, इसलिए मुझे उनकी लंबाई सामने नहीं पता है। वे हमेशा />आईओएस: स्ट्रिप <img...> एनएसएसटींग (एक एचटीएमएल स्ट्रिंग) से

मैं यह कैसे कर सकता हूं?

संपादित करें:nicolasthenoz के जवाब के आधार पर, मैं एक समाधान है कि कम कोड की आवश्यकता है के साथ आया था:

NSString *HTMLTagss = @"<img[^>]*>"; //regex to remove img tag 
NSString *stringWithoutImage = [htmlString stringByReplacingOccurrencesOfRegex:HTMLTagss withString:@""]; 

उत्तर

14

आप NSRegularExpressionSearch विकल्प के साथ NSString विधि stringByReplacingOccurrencesOfString का उपयोग कर सकते है:

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

या आप भी NSRegularExpression की replaceMatchesInString विधि का उपयोग कर सकते हैं। इस प्रकार,, कर सकते हैं यह सोचते हैं आप एक NSMutableString *html में अपने html है आप:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<img[^>]*>" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:nil]; 

[regex replaceMatchesInString:html 
         options:0 
         range:NSMakeRange(0, html.length) 
       withTemplate:@""]; 

मैं व्यक्तिगत रूप से RegexKitLite की stringByReplacingOccurrencesOfRegex पद्धति पर इनमें से एक विकल्प की ओर झुक चाहते हैं। किसी तीसरे पक्ष की लाइब्रेरी को इस तरह के लिए सरल बनाने की आवश्यकता नहीं है जब तक कि कुछ अन्य अनिवार्य समस्या न हो।

+0

धन्यवाद, पहले इसे नहीं देखा था और यह बहुत आसान है ... – nicolasthenoz

+0

समझ में आता है, धन्यवाद! –

3

एक रेगुलर एक्सप्रेशन का उपयोग करके अपने स्ट्रिंग में matchs के खोजने के लिए और उन्हें हटाने! यहाँ कैसे

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<img[^>]*>" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:nil]; 

NSMutableString* mutableString = [yourStringToStripFrom mutableCopy]; 
NSInteger offset = 0; // keeps track of range changes in the string due to replacements. 
for (NSTextCheckingResult* result in [regex matchesInString:yourStringToStripFrom 
                options:0 
                 range:NSMakeRange(0, [yourStringToStripFrom length])]) { 

    NSRange resultRange = [result range]; 
    resultRange.location += offset; 

    NSString* match = [regex replacementStringForResult:result 
               inString:mutableString 
               offset:offset 
               template:@"$0"]; 

    // make the replacement 
    [mutableString replaceCharactersInRange:resultRange withString:@""]; 

    // update the offset based on the replacement 
    offset += ([replacement length] - resultRange.length); 
} 
+0

मुझे समझ में नहीं आता कि आपको चक्र के लिए इस कोड को क्यों चाहिए। क्या आप अपने समाधान और खान के बीच के अंतर को समझा सकते हैं? (प्रश्न संपादित) –

संबंधित मुद्दे