दिलचस्प पोस्ट
ActiveX का उपयोग किए बिना वेबसाइट का एक स्क्रीनशॉट लेने के लिए जावास्क्रिप्ट कोड 32-बिट प्रक्रिया से कैसे 64-बिट प्रक्रिया शुरू करें इनपुट मान की जांच करना एक पूर्णांक है virtualenv के बजाय वैश्विक साइट-पैकेज में स्थापित करना मेरी स्क्रिप्ट एसक्यूआरएल यूआरएल क्या है? सी # में ASCII स्ट्रिंग का मान कैसे प्राप्त करें समान ऑब्जेक्ट में डुप्लिकेट प्रॉपर्टी नामों के साथ JSON को डिसेरीज़ कैसे करें int सरणी का आकार ढूंढना विंडो के शीर्षक बार में एक अतिरिक्त बटन कैसे जोड़ें? औसत रेगेक्स एल्गोरिदम की समय जटिलता क्या है? JQuery के साथ एक सरणी कैसे प्राप्त करें, एक ही नाम के साथ एकाधिक <input> एएसपी को मेमोरीस्ट्रीम बाँध कैसे करें: छवि नियंत्रण? बिल्ड जायके का उपयोग करना – स्ट्रक्चरिंग स्रोत फ़ोल्डर्स और build.gradle सही तरीके से ओरेकल एसक्यूएल में एक सिंगल उद्धरण को कैसे संभालना है सी # में संदेश भेजें

NSScanner का उपयोग कैसे करें?

मैंने अभी एप्स के एनएसएसकैनर के डॉक्यू को पढ़ा है। मैं उस स्ट्रिंग का पूर्णांक प्राप्त करने की कोशिश कर रहा हूं: @ "उपयोगकर्ता लॉग इन (3 प्रयास)"।

मुझे कोई उदाहरण नहीं मिल सकता है, कैसे कोष्ठकों के भीतर स्कैन करने के लिए कोई विचार?

यहां कोड है:

NSString *logString = @"user logged (3 attempts)"; NSScanner *aScanner = [NSScanner scannerWithString:logString]; [aScanner scanInteger:anInteger]; NSLog(@"Attempts: %i", anInteger); 

वेब के समाधान से एकत्रित समाधान "NSScanner का उपयोग कैसे करें?"

'स्ट्रिंग के कुछ निश्चित मूल्यों को पाने के लिए मैं यही करता हूं

पहले मुझे इस पद्धति को परिभाषित किया गया है

 - (NSString *)getDataBetweenFromString:(NSString *)data leftString:(NSString *)leftData rightString:(NSString *)rightData leftOffset:(NSInteger)leftPos; { NSInteger left, right; NSString *foundData; NSScanner *scanner=[NSScanner scannerWithString:data]; [scanner scanUpToString:leftData intoString: nil]; left = [scanner scanLocation]; [scanner setScanLocation:left + leftPos]; [scanner scanUpToString:rightData intoString: nil]; right = [scanner scanLocation] + 1; left += leftPos; foundData = [data substringWithRange: NSMakeRange(left, (right - left) - 1)]; return foundData; } 

फिर इसे कहते हैं।

 foundData = [self getDataBetweenFromString:data leftString:@"user logged (" rightString:@"attempts)" leftOffset:13]; 

leftOffset बाईं स्ट्रिंग के लिए वर्णों की संख्या है

एक आसान तरीका साफ हो सकता है लेकिन यह मेरा समाधान था

Ziltoid के समाधान काम करता है, लेकिन यह आपके द्वारा आवश्यकता से अधिक कोड है।

मुझे दिए परिस्थिति के लिए एनएसएसकेनर को शुरू करने पर परेशान नहीं होगा। NSCharacterSet और NSString आपको सभी की आवश्यकता होती है:

  NSString *logString = @"user logged (3 attempts)"; NSString *digits = [logString stringByTrimmingCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; NSLog(@"Attempts: %i", [digits intValue]); 

या स्विफ्ट में:

  let logString = "user logged (3 attempts)" let nonDigits = NSCharacterSet.decimalDigitCharacterSet().invertedSet let digits : NSString = logString.stringByTrimmingCharactersInSet(nonDigits) NSLog("Attempts: %i", digits.intValue) 

यहां NSScanner का उपयोग करना एक सरल समाधान है (हाँ, @एनएनआरस्पोरमैन वास्तव में एक साफ समाधान है!):

 NSString *logString = @"user logged (3 attempts)"; NSString *numberString; NSScanner *scanner = [NSScanner scannerWithString:logString]; [scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil]; [scanner scanCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&numberString]; NSLog(@"Attempts: %i", [numberString intValue]); 

NSLog आउटपुट:

 Attempts: 3 

NSScanner एक रैखिक स्कैनर है आपको उन चीजों के माध्यम से स्कैन करना होगा जिन्हें आप नहीं चाहते हैं कि आप क्या चाहते हैं।

आप [aScanner scanUpToCharactersInSet:[NSCharacterSet decimalDigitCharacterSet] intoString:NULL] संख्या वर्ण के लिए पिछले सब कुछ कूदने के लिए। फिर आप एक पूर्णांक में वर्ण को स्कैन करने के लिए [aScanner scanInteger:&anInteger] करते हैं

यहाँ reg- पूर्व उपयोग है

 NSString *logString = @"user logged (3 attempts)"; NSString * digits = [logString stringByMatching:@"([+\\-]?[0-9]+)" capture:1];