2010-08-13 33 views

Trả lời

37

Nếu bạn không quá lo lắng về hiệu quả, một cách đơn giản sẽ là [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""].

Nếu không, bạn có thể chạy qua các ký tự trong một vòng lặp, gắn thêm các ký tự không nằm trong tập hợp vào chuỗi mới. Nếu bạn làm theo cách đó, hãy nhớ sử dụng NSMutableString cho kết quả của bạn khi bạn đang xây dựng nó.

3

Bạn có thể sử dụng một số NSScanner để quét qua chuỗi, quét một đoạn ký tự không phải trong tập hợp, thêm nó vào chuỗi kết quả của bạn, quét các ký tự trong bộ thành biến mà bạn khác bỏ qua và lặp lại cho đến khi máy quét kết thúc.

2

Thanh toán đoạn mã sau:

@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 

Nếu bạn chỉ định một chuỗi thay thế @ "" bạn sẽ loại bỏ các nhân vật trong bộ này.

Các vấn đề liên quan