У меня есть NSCharacterSet, который содержит все символы, которые я хочу удалить из моего NSString.
Как я могу это сделать?
Ответ 1
Если вы не слишком обеспокоены эффективностью, простым способом будет [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""].
В противном случае вы можете запускать символы в цикле, добавляя те, которые не были установлены в новую строку. Если вы сделаете это так, не забудьте использовать NSMutableString для своего результата, когда вы его создаете.
Ответ 2
Вы можете использовать NSScanner для сканирования по строке, сканирование фрагмента символов - не в наборе, добавив его в строку результатов, сканируя символы в наборе в переменную, которую вы иначе игнорируете, и повторяете до тех пор, пока сканер не достигнет конца.
Ответ 3
Оформить следующий код:
@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
Если вы укажете заменяющую строку @"", вы должны удалить символы в наборе.