【问题标题】:String search in string array in objective c在目标c中的字符串数组中进行字符串搜索
【发布时间】:2011-02-17 15:11:20
【问题描述】:

我想在目标 c 的字符串数组中搜索一个特定的字符串。有人可以在这方面帮助我吗?

【问题讨论】:

  • 这是你的作业吗?我认为这很容易做到。为什么只是循环和比较?
  • na,它不是作业,我需要最好的算法来搜索一个特定的字符串,这在 iphone 中消耗的资源并不多,这就是我提出问题的原因

标签: ios objective-c arrays nsstring


【解决方案1】:
BOOL isTheObjectThere = [myArray containsObject: @"my string"];

或者如果你需要知道它在哪里

NSUInteger indexOfTheObject = [myArray indexOfObject: @"my string"];

我强烈建议您阅读documentation on NSArray。最好在发布您的问题之前这样做:-)

【讨论】:

  • 可以说我有一个数组包含 NSArray *myArr = [[NSArray alloc] initWithObjects:@"test1", @"test3",@"test3", nil];我想搜索“tes”让我们说我想要一个通配符来工作,我无法理解,所以我提出了这个问题,但感谢您的回复,感谢
  • 您可以循环并测试每个值,或者查看 NSPredicate ,它提供了非常全面的集合对象搜索 - 几乎与 SQL where 子句一样强大。 developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
【解决方案2】:

您可以使用 NSPredicate 类在字符串数组中搜索字符串。 请参阅下面的示例代码。

NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Maruthi",@"Hyundai", @"Ford", @"Benz", @"BMW",@"Toyota",nil];

NSString *stringToSearch = @"i";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate

NSArray *results = [cars filteredArrayUsingPredicate:predicate];

这是在字符串数组中搜索字符串最有效的方法

【讨论】:

  • 这适用于小数组,但如果你有非常大的数组(超过 30k 条记录)你有什么想法
  • 然后保持数组排序并使用二分搜索 (bsearch) 来定位和插入新元素。 NSArray/NSMutableArray 有相应的方法。
【解决方案3】:
NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Max",@"Hai", @"Fine", @"Bow", @"Bomb",@"Toy",nil];

NSString *searchText = @"i";
 NSArray *results = [cars filteredArrayUsingPredicate:predicate];

// if you need case sensitive search avoid '[c]' in the predicate

 NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"title contains[c] %@",
                                searchText];


searchResults = [cars  filteredArrayUsingPredicate:resultPredicate];

【讨论】:

  • 虽然此代码 sn-p 可能会回答问题,但最好包括说明它如何回答问题,以便此答案对网站的未来访问者有用
  • 这段代码可以很好地在单词数组中找到单词。
  • 我想用初始文本来做这个。我的意思是搜索文本需要从开始而不是从任何地方开始匹配。请帮忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2012-02-10
  • 2020-09-27
  • 2011-07-04
  • 2023-04-05
相关资源
最近更新 更多