0

我有一个字符串数组(超过 5k 个元素),每个字符串都是可变长度的。我可以使用 NSPredicate 在数组中查找特定的字符串(花了一点时间才弄清楚)。现在我需要找到长度大于 N 的元素。

我查看了文档,长度似乎不是 Predicate Programming Guide 中可用的功能之一。

提前致谢。

岩浆

4

2 回答 2

2
NSArray * words= [allLinedStrings filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > %d",N]];

N 是您在问题中提到的整数。

于 2012-09-09T18:44:48.317 回答
-1

我不熟悉 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。如果不是,您将收到运行时错误。

于 2012-09-09T18:44:46.500 回答