我有一个字符串数组(超过 5k 个元素),每个字符串都是可变长度的。我可以使用 NSPredicate 在数组中查找特定的字符串(花了一点时间才弄清楚)。现在我需要找到长度大于 N 的元素。
我查看了文档,长度似乎不是 Predicate Programming Guide 中可用的功能之一。
提前致谢。
岩浆
NSArray * words= [allLinedStrings filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > %d",N]];
N 是您在问题中提到的整数。
我不熟悉 NSPredicate,所以我不能给你一个使用它的解决方案,但你不能只使用一些简单的 NSString 方法:
//This is the length of the string you want to check
int threshold = 5;
//Iterates through all elements in the array
for(int index = 0; index < [stringArray count]; index++) {
//Checks if the length of the string stored at the current index is greater than N
if([[stringArray objectAtIndex:index] length] > threshold) {
//String length is greater than N
}
}
或者,您可以通过替换以下行来添加检查以查看数组是否只有字符串(为了安全而牺牲性能):
if([[stringArray objectAtIndex:index] length] > threshold)
有了这个:
if([[stringArray objectAtIndex:index] length] > threshold && [[stringArray objectAtIndex:index] isKindOfClass[NSString class]])
它的作用是确保当前索引处的对象是一个 NSString。如果不是,您将收到运行时错误。