मुझे यकीन नहीं है कि पिछले दो उत्तरों में आवश्यकताओं को शामिल किया गया है, इसलिए यह एक उत्तर है जो आवश्यकताओं की एक कठोर व्याख्या के अनुरूप है।
मूल पोस्ट के कोड में टिप्पणियां से आवश्यकताओं ले रहा है:
//The string only contains alpha or numerical characters.
//But now I want to check that both character sets are present?
इसका मतलब है कि परीक्षण पारित करने के लिए एक स्ट्रिंग केवल संख्या और अक्षरों और प्रत्येक के कम से कम एक से मिलकर चाहिए।
NSString
rangeOfCharacterFromSet:
एक स्ट्रिंग में एक वर्ण पाता है यदि यह किसी निश्चित सेट से संबंधित है, तो हम इसका उपयोग कर सकते हैं।
NSString *string = // ... string to test;
NSCharacterSet *illegalChars = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
// Test if there is an illegal character in the string
BOOL hasIllegalCharacter = [string rangeOfCharacterFromSet: illegalCharacterSet].location != NSNotFound;
BOOL hasLetter = [string rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]].location != NSNotFound;
BOOL hasDigit = [string rangeOfCharacterFromSet: [NSCharacterSet decimalDigitCharacterSet]].location != NSNotFound;
if (hasDigit && hasLetter && !hasIllegalCharacter ) {
// String OK
}
डॉक्स में विस्तृत रूप में, rangeOfCharacterFromSet:
{NSNotFound, 0} मामले में सेट से कोई चरित्र स्ट्रिंग में पाया जाता है के एक NSRange देता है। यह कोको में स्ट्रिंग में तारों या पात्रों की खोज के लिए अन्य विधियों के समान है।
मुझे पता है कि यह कहने के लिए यह पाखंडी है लेकिन यह करने के लिए सबसे सरल, सबसे समझने योग्य और सबसे प्रभावी तरीका लगभग निश्चित रूप से स्ट्रिंग के माध्यम से लूप करने के लिए है, प्रत्येक चरित्र को 'characterAtIndex' के साथ निकालें, और उचित सीमाओं के विरुद्ध इसका परीक्षण करें । यदि आप अब से 6 महीने के कोड को समझना चाहते हैं तो दूसरों के साथ आप बेहतर कुछ अच्छी तरह से अच्छी टिप्पणियां लेंगे। –