Soru Dize dizisinde dize araması nesnel c


Hedef dizideki dizgiler dizisinde belirli bir dizgeyi aramak istiyorum c. Birisi bana bu konuda yardımcı olabilir mi?


76
2018-05-10 11:20


Menşei


Ödev senin mi Bence bu kolay bir şey. Neden sadece döngü ve karşılaştırma? - vodkhang
na, onun ödevi değil, iphone'daki fazla kaynağı olmayan belirli bir diziyi aramak için en iyi algoritmaya ihtiyacım vardı, bu yüzden soruyu sordum - Filthy Knight
olası kopyası Objective-C String için NSArray ara? - nielsbot


Cevaplar:


BOOL isTheObjectThere = [myArray containsObject: @"my string"];

ya da nerede olduğunu bilmeniz gerekiyorsa

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

Okumanızı kesinlikle tavsiye ederim NSArray ile ilgili belgeler. Sorunuzu göndermeden önce bunu yapmak en iyisi :-)


174
2018-05-10 16:20



NSArray * myArr = [[NSArray ayırma] initWithObjects: @ "test1", @ "test3", @ "test3", nil] içeren bir dizilim var; "tes" araması yapmak istedim, o zaman anlayamadığım bir vahşi kart stufu istediğimi söyleyebilirim, bu yüzden bu soruyu koydum, ama cevabınız için teşekkürler - Filthy Knight
Her bir değerin içine girip, her değeri test edersiniz ya da toplama nesneleri için oldukça kapsamlı bir arama sağlayan NSPredicate'e bakarsınız. developer.apple.com/mac/library/documentation/cocoa/Conceptual/... - JeremyP


Dizeler dizisindeki dizeleri aramak için NSPredicate sınıfını kullanabilirsiniz. Aşağıdaki örnek kodlara bakın.

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];

Bu dizeleri dizi dizeleri aramak için en etkili yoldur


43
2018-03-20 12:36



Bu küçük dizi için iyi çalışıyor, ancak çok büyük bir dizi varsa (daha sonra 30k kayıtları) herhangi bir fikrim olabilir - amit gupta
Ardından diziyi sıralamaya devam edin ve yeni öğeler yerleştirmek ve eklemek için bir ikili arama (bsearch) kullanın. NSArray / NSMutableArray bunun için yöntemleri var. - spstanley


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];

2
2017-09-11 08:52



Bu kod pasajı soruyu yanıtlayabilse de, bu cevabın sitenin gelecekteki ziyaretçilerine faydalı olması için soruyu nasıl yanıtladığıyla ilgili bir açıklama eklemek daha iyidir. - RobV
Bu kod parçası, kelimeyi bir dizi kelime içinde bulmak için iyi çalışır. - Rahul K Rajan