是否存在Objective-C(NSString)等效的Java的replaceAll(“\\ p {Cntrl}”,“”)?

时间:2013-05-28 06:02:24

标签: java objective-c nsstring replaceall control-characters

非常简单的问题:

是否有一个Objective-C等效的iOS开发人员可以使用NSString对象来执行与Java的replaceAll(“\ p {Cntrl}”,“”)调用String相同的事情?

我们已经在Java中使用过这个:

String noControlCharsString = maybeHasControlCharsString.replaceAll("\\p{Cntrl}", "");

我也想在Objective-C中使用这样的东西:

NSString *noControlCharsString = [maybeHasControlCharsString stringByReplacingControlCharsWithString:@""];

提前致谢。

AG3

3 个答案:

答案 0 :(得分:2)

尝试使用这个.. 这用于替换字符。

  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);

答案 1 :(得分:1)

stringByReplacingOccurrencesOfString的{​​{1}}方法有一个 NSString选项接受与您相同的模式 \ p {Cntrl} Java方法:

NSRegularExpressionSearch

答案 2 :(得分:0)

尝试:

NSString *noControlCharsString = [maybeHasControlCharsString stringByTrimmingCharactersInSet:controlCharacterSet];

EDIT 正如Martin R所说的那样,上面只删除任何领先或尾随的比赛。

这是一个类别方法,它从字符串中删除所有匹配项:

- (NSString *)stringByStrippingCharactersInSet:(NSCharacterSet *)set {
    NSString *r = [self stringByTrimmingCharactersInSet:set];
    NSArray *components = [r componentsSeparatedByCharactersInSet:set];
    components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]];
    return [components componentsJoinedByString:@""];
}