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