दिलचस्प पोस्ट
मैं एक प्रॉक्सी (आईएसए-एनटीएलएम) के पीछे रूबी रत्न कैसे अपडेट कर सकता हूं डीपीआई-एवेयर एप्लिकेशन बनाना गिटहब पर मूल और अपस्ट्रीम के बीच अंतर क्या है? बाइनरी ब्लॉब 8000 बाइट्स को छोटा कर दिया गया – SQL सर्वर 2008 / वर्बलरी (अधिकतम) द्वारा कारण: java.lang.OutOfMemoryError: बिटमैप आकार VM बजट से अधिक है धराशायी सीमा स्ट्रोक की लंबाई और स्ट्रोक के बीच की दूरी को नियंत्रित करें कॉर्पोरेट प्रॉक्सी। पीएसी के पीछे एनपीएम का उपयोग करना ASP.Net MVC – संसाधन त्रुटि नहीं मिल पा रहा है एक PHP फ़ंक्शन में एक ट्वीट से सभी हैशटैग पुनर्प्राप्त करें अजगर में स्पष्ट टर्मिनल खाली सेट सचमुच? QtCreator प्रोजेक्ट पर "x86_64 आर्किटेक्चर के लिए प्रतीक (सिम) नहीं मिले" कोणीय जे एस – प्लेसहोल्डर फ़िल्टर से खाली परिणाम के लिए स्थिर नाम से अज्ञात नामस्थान की श्रेष्ठता? आर एक्स में ब्रेक एक्स एक्सिस

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

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

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

यहां कोड है:

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

Solutions Collecting From Web of "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];