Существует ли Objective-C (NSString), эквивалентный Java replaceAll("\\p{Cntrl}", "")?
Довольно простой вопрос:
Существует ли аналог Objective-C, который разработчики iOS могут использовать с объектами NSString для выполнения того же действия, что и Java replaceAll("\p{Cntrl}", "") для вызова String?
У нас уже есть это на Java:
String noControlCharsString = maybeHasControlCharsString.replaceAll("\\p{Cntrl}", "");
Я тоже хочу что-то подобное в Objective-C:
NSString *noControlCharsString = [maybeHasControlCharsString stringByReplacingControlCharsWithString:@""];
Заранее спасибо.
AG3
3 ответа
Попробуйте использовать это.. Это используется для замены персонажа.
NSString *str = @"\\p{Cntrl}AB/bar:baz\\p{Cntrl}foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"\\p{Cntrl}"];
str = [[str componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", str);
Другой способ Это используется для замены всей строки.
NSString *str = @"\\p{Cntrl} This is a string \\p{Cntrl}";
str = [str stringByReplacingOccurrencesOfString:@"\\p{Cntrl}"
withString:@""];
NSLog(@"%@", str);
stringByReplacingOccurrencesOfString
метод NSString
имеет NSRegularExpressionSearch
опция, которая принимает тот же шаблон \p{Cntrl}, что и ваш метод Java:
NSString *maybeHasControlCharsString = @"\nabc\r\ndef\r";
NSString *noControlCharsString =
[maybeHasControlCharsString stringByReplacingOccurrencesOfString:@"\\p{Cntrl}"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [maybeHasControlCharsString length])];
NSLog(@"%@", noControlCharsString);
// Output: abcdef
Пытаться:
NSString *noControlCharsString = [maybeHasControlCharsString stringByTrimmingCharactersInSet:controlCharacterSet];
РЕДАКТИРОВАТЬ Как справедливо говорит Мартин Р, вышеприведенное только удаляет любые лидирующие или конечные матчи
Вот метод категории, который удаляет все совпадения из строки:
- (NSString *)stringByStrippingCharactersInSet:(NSCharacterSet *)set {
NSString *r = [self stringByTrimmingCharactersInSet:set];
NSArray *components = [r componentsSeparatedByCharactersInSet:set];
components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]];
return [components componentsJoinedByString:@""];
}