2010-08-13 15 views
17

से NSCharacterSet में वर्ण हटाएं मेरे पास एक एनएससीएचएआरएटरसेट है जिसमें सभी वर्ण शामिल हैं जिन्हें मैं अपने एनएसएसटींग से हटाना चाहता हूं।NSString

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

उत्तर

37

यदि आप दक्षता के बारे में बहुत चिंतित नहीं हैं, तो एक आसान तरीका [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""] होगा।

अन्यथा, आप एक लूप में वर्णों के माध्यम से चला सकते हैं, जो एक नई स्ट्रिंग पर सेट में नहीं थे। यदि आप इसे इस तरह करते हैं, तो अपने परिणाम के लिए NSMutableString का उपयोग करना याद रखें क्योंकि आप इसे बना रहे हैं।

3

आप स्ट्रिंग के माध्यम से स्कैन करने के लिए NSScanner का उपयोग कर सकते हैं, वर्णों का एक हिस्सा स्कैनिंग-इन-द-सेट, इसे अपने परिणाम स्ट्रिंग में जोड़ना, वर्णों में इन-द-सेट को अन्यथा स्कैन करना अनदेखा करें, और स्कैनर अंत तक पहुंचने तक दोहराना।

2

चेकआउट निम्नलिखित कोड:

@implementation NSString(Replacing) 

- (NSString *)stringByReplacingCharactersInSet:(NSCharacterSet *)charSet withString:(NSString *)aString { 
    NSMutableString *s = [NSMutableString stringWithCapacity:self.length]; 
    for (NSUInteger i = 0; i < self.length; ++i) { 
     unichar c = [self characterAtIndex:i]; 
     if (![charSet characterIsMember:c]) { 
      [s appendFormat:@"%C", c]; 
     } else { 
      [s appendString:aString]; 
     } 
    } 
    return s; 
} 


@end 

आप में से एक प्रतिस्थापन स्ट्रिंग निर्दिष्ट करते हैं @ "" आप सेट में पात्रों को दूर करेंगे।