/ / जाँच करें कि क्या एक बड़ी स्ट्रिंग में NSPredicate या नियमित अभिव्यक्ति - ios, nspredicate का उपयोग करके एक और स्ट्रिंग है

जांचें कि क्या एक बड़ी स्ट्रिंग में NSPredicate या नियमित अभिव्यक्ति का उपयोग करके एक और स्ट्रिंग है - ios, nspredicate

NSString *string = @"A long term stackoverflow.html";
NSString *expression = @"stack(.*).html";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", expression];

BOOL match = [predicate evaluateWithObject:string]
if(match){
NSLog(@"found");
} else {
NSLog(@"not found");
}

मैं कैसे खोज सकता हूं कि अभिव्यक्ति स्ट्रिंग में मौजूद है या नहीं। उपरोक्त कोड एक शब्द के लिए काम कर रहा है। लेकिन अगर मैं कुछ और शब्द स्ट्रिंग में नहीं खोजा जा सकता है

उत्तर:

उत्तर № 1 के लिए 1

यदि आप एक रेगेक्स मान के साथ एक स्ट्रिंग की जांच करना चाहते हैं तो आपको उपयोग करना चाहिए NSRegularExpression नहीं NSPredicate.

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"stack(.*).html" options:0 error:nil];

फिर आप मैच खोजने के लिए फ़ंक्शंस का उपयोग कर सकते हैं ...

NSString *string = @"stackoverflow.html";

NSUInteger matchCount = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, string.length)];

NSLog(@"Number of matches = %d", matchCount);

ध्यान दें: मुझे रेगेक्स पैटर्न बनाने में बहुत बुरा लगता है इसलिए मैंने सिर्फ आपके पैटर्न और उदाहरण का उपयोग किया है। मुझे नहीं पता कि क्या पैटर्न वास्तव में इस स्ट्रिंग में मैच का पता लगाएगा लेकिन अगर कोई मैच होता है तो यह काम करेगा।


उत्तर № 2 के लिए 1

NSPredicate केवल पूर्ण स्ट्रिंग्स से मेल खाता है, इसलिए आपको पूरे स्ट्रिंग को कवर करने के लिए अपना पैटर्न बदलना चाहिए:

NSString    *expression = @".*stack(.*).html.*";

हालांकि, आपका मूल पैटर्न "स्टैक माई फाइल्स एचटीएमएल के समान" जैसे कुछ से मेल खाएगा, इसलिए आप अपने रेगेक्स पैटर्न पर पढ़ना चाह सकते हैं।


उत्तर № 3 के लिए -1

अपने प्रश्न में सुधार करें, लेकिन अपने प्रश्न का उत्तर नीचे देखें

 NSString *string = @"This is the main stringsss which needs to be searched for some text the texts can be any big. let us see";
if ([string rangeOfString:@"."].location == NSNotFound) {
NSLog(@"string does not contains");
} else {
NSLog(@"string contains !");
}