非常简单的问题:
是否有一个Objective-C等效的iOS开发人员可以使用NSString对象来执行与Java的replaceAll(“\ p {Cntrl}”,“”)调用String相同的事情?
我们已经在Java中使用过这个:
String noControlCharsString = maybeHasControlCharsString.replaceAll("\\p{Cntrl}", "");
我也想在Objective-C中使用这样的东西:
NSString *noControlCharsString = [maybeHasControlCharsString stringByReplacingControlCharsWithString:@""];
提前致谢。
AG3
答案 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:@""];
}