Intereting Posts
आईओएस एप का डिफ़ॉल्ट स्थानीयकरण सेट करें com.apple.CoreData.SQLDebug काम नहीं कर रहा है 100 * 100 आकार की छविदृश्य या बटन की 3x छवियों को क्या होना चाहिए सामग्री बदलते समय सामग्री बदलता है UIScrollView सामग्री समायोजित करता है क्यों viewdidlayoutsubviews कई बार कॉल करते हैं? Regex का उपयोग करके NSString में दिनांक और समय ढूँढना आईओएस 11 – स्मार्ट कोट्स अक्षम करें फायरबेज के साथ Google Analytics स्ट्रिंग में फाइलों को कन्वर्ट करने के बाद उन्हें स्विफ्ट 3 में अपलोड करें? CLLocation का उपयोग करके दो निर्देशांक के बीच दूरी की गणना करना Obj-C: __block चर आईपैड मिनी के लिए आईओएस में स्क्रीन आकार गलत क्यों है? PFObject मानों में कक्षा नहीं हो सकती है: UIImage आईओएस: ज़ूम करने के लिए स्क्रॉलव्यू में छवि दृश्य जोड़ें iAds ऑटो लेआउट के साथ समस्याओं का कारण बनता है?

स्ट्रिंग के साथ सटीक मिलान NSPredicate

मेरे पास इस तरह की एक NSPredicate है:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name CONTAINS %@", myString]; 

लेकिन वह उस स्ट्रिंग को कुछ भी वापस लौटा देगा। उदाहरण के लिए: यदि मेरी इकाई.नाम है जहां:

 text texttwo textthree randomtext 

और myString text था तो उन सभी स्ट्रिंग्स मैच होंगे। मुझे यह इतना पसंद है कि यदि मेरा myString text तो यह केवल प्रथम वस्तु को नाम के text साथ वापस लौटाएगा और अगर myString को randomtext से randomtext जाएगा तो वह चौथे ऑब्जेक्ट को नाम से randomtext वापस randomtext । मैं इसे केस असंवेदनशील होने के लिए भी देख रहा हूं और यह सफेद स्थान की उपेक्षा करता है

Solutions Collecting From Web of "स्ट्रिंग के साथ सटीक मिलान NSPredicate"

इसे ऐसा करना चाहिए:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name LIKE[c] %@", myString]; 

LIKE तार के साथ मेल खाता है? और * वाइल्डकार्ड के रूप में [c] इंगित करता है कि तुलना असंवेदनशील होने चाहिए।

यदि आप नहीं चाहते हैं? और * को वाइल्डकार्ड के रूप में माना जाएगा, आप LIKE बजाय == उपयोग कर सकते हैं:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name ==[c] %@", myString]; 

एनएसपीडिकेट प्रॉजेक्ट फॉर्मेट स्ट्रिंग सिंटैक्स प्रलेखन में अधिक जानकारी

आप अपनी अभिव्यक्ति के साथ नियमित अभिव्यक्ति मैचर का उपयोग कर सकते हैं, जैसे:

 NSString *str = @"test"; NSMutableString *arg = [NSMutableString string]; [arg appendString:@"\\s*\\b"]; [arg appendString:str]; [arg appendString:@"\\b\\s*"]; NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF matches[c] %@", arg]; NSArray *a = [NSArray arrayWithObjects:@" test ", @"test", @"Test", @"TEST", nil]; NSArray *b = [a filteredArrayUsingPredicate:p]; 

उपरोक्त कोड का टुकड़ा एक नियमित अभिव्यक्ति बनाता है जो शुरुआत में और / या अंत में, वैकल्पिक शब्द के साथ स्ट्रिंग को "शब्द सीमा" मार्करों \b घिरे लक्ष्य शब्द के साथ मेल करता है। matches बाद [c] अर्थ है "मैच केस-इनसेन्सिटिव"

यह उदाहरण स्ट्रिंग्स की एक सरणी का उपयोग करता है; इसे अपने वातावरण में काम करने के लिए, SELF को entity.name साथ entity.name