如何使用 NSPredicate 将以数字或符号开头的字符串过滤到 NSArray。
例子:
array = {"John", "Mary", "Aroldo", "1John", "+Mary"}
to newArray = {"1John," "+Mary"}
最佳答案
这里有 4 种方法。所有示例都使用否定字符类。你的请求是过滤掉数字和符号,但你也可以说你想过滤掉以非字母字符开头的单词。
- (void)testFilterArray0
{
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[^a-zA-Z].*"];
filtered = [unfiltered filteredArrayUsingPredicate:predicate];
STAssertTrue([filtered isEqualToArray:expected], nil);
}
- (void)testFilteredArray1
{
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[^\\p{L}].*"];
filtered = [unfiltered filteredArrayUsingPredicate:predicate];
STAssertTrue([filtered isEqualToArray:expected], nil);
}
- (void)testFilteredArray2
{
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[^\\p{Letter}].*"];
filtered = [unfiltered filteredArrayUsingPredicate:predicate];
STAssertTrue([filtered isEqualToArray:expected], nil);
}
- (void)testFilteredArray3
{
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[^\\p{General_Category=Letter}].*"];
filtered = [unfiltered filteredArrayUsingPredicate:predicate];
STAssertTrue([filtered isEqualToArray:expected], nil);
}
关于iphone - 使用 NSPredicate 将以数字或符号开头的字符串过滤到 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15117984/