Ich versuche, ein Spiel in einem verschachtelten Array zu finden, wenn eine beliebige Zeichenfolge in einem Array in einem bestimmten Satz enthalten ist.NSPredicate mit Regular Expression Seltsamkeit
Hier ist mein Array
NSArray *menuItems = @[
@[@"beverage", @"drink", @"smoothie", @"coffee", @"juice", @"shakes", @"tea", @"beer"],
@[@"breakfast", @"egg", @"omelet", @"bagel", @"yogurt", @"pancake", @"cereal", @"waffle", @"oatmeal", @"parfait", @"yoghurt", @"huevos", @"bacon", @"french toast", @"frittata", @"hash brown", @"muesli", @"quiche"],
@[@"omelet", @"brunch", @"pancake", @"waffle", @"huevos", @"bacon", @"blintz", @"sausage", @"casserole", @"crepe", @"egg", @"french toast", @"bacon", @"french toast", @"frittata", @"hash brown", @"muesli", @"quiche", @"salad", @"salmmon", @"soup", @"tartine"],
@[@"dessert", @"sweet", @"waffle", @"cake"],
@[@"appetizer", @"soup", @"side", @"fruit", @"starter", @"snack", @"bread", @"spread"],
@[@"coffee", @"drink", @"beverage", @"espresso", @"cappuccino", @"americano", @"latte", @"macchiato", @"frappuccino", @"flat white"]
];
Nun, wenn ich gegen einen bestimmten Satz zu suchen, möchte ich in dem Satz in diesem Array gegen jedes Wort eine beliebige Zeichenfolge übereinstimmen, die der linken Seite übereinstimmt. Also wenn ich einen Satz wie "Heiße Bagels mit Käse" habe, sollte es mit der Zeichenfolge "Bagel" übereinstimmen, die im zweiten Array enthalten ist.
Mein Ansatz ist diese:
NSString *dishName = [NSString stringWithFormat:@"\\b%@\\w*",@"sentence goes here"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF IN %@", dishName];
NSArray *matchedArray = [menuItems filteredArrayUsingPredicate:predicate];
if (matchedArray.count>0) {
NSLog(@"found match for dish name:%@",@"sentence");
}
else {
NSLog(@"Didn't match dish name:%@",@"sentence");
}
nun die Seltsamkeit kommt. Nach dem regulären Ausdruck, den ich bin auf der linken Seite einer Wortgrenze übereinstimmt, so dass es nicht Wildcard tun soll, von der linken Seite entsprechen.
Aber wenn mein Satz ist zum Beispiel: @ "Gegrillter Thunfisch Steak Burrito (1 Stück)" Es entspricht der "Tee" Zeichenfolge in der ersten Reihe für das Wort "Steak".
Jede Idee, warum dies geschieht?
prüfen arbeiten diese http://stackoverflow.com/questions/37919934/nspredicate-for-exact-match – kb920
ich nicht tat möchte dafür ein Blockprädikat verwenden. Wie auch immer, habe meinen Fehler gefunden, sehe meine Antwort – Lefteris