2

非常に簡単な質問:

iOS 開発者が NSString オブジェクトで使用して、Java の replaceAll("\p{Cntrl}", "") を String で呼び出すのと同じことを行うことができる、Objective-C に相当するものはありますか?

これはすでに Java に含まれています。

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

Objective-C でもこのようなものが必要です。

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

前もって感謝します。

AG3

4

3 に答える 3

2

stringByReplacingOccurrencesOfStringメソッドにNSStringは、 Java メソッドNSRegularExpressionSearchと同じパターン\p{Cntrl}を受け入れるオプションがあります。

NSString *maybeHasControlCharsString = @"\nabc\r\ndef\r";
NSString *noControlCharsString =
    [maybeHasControlCharsString stringByReplacingOccurrencesOfString:@"\\p{Cntrl}"
                                       withString:@""
                                          options:NSRegularExpressionSearch
                                            range:NSMakeRange(0, [maybeHasControlCharsString length])];
NSLog(@"%@", noControlCharsString);
// Output: abcdef
于 2013-05-28T07:02:44.960 に答える
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);
于 2013-05-28T06:14:56.253 に答える
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:@""];
}
于 2013-05-28T07:20:39.533 に答える