2015-08-03 5 views
11

मुझे यह जानने की ज़रूरत है कि किसी स्ट्रिंग में यह सुनिश्चित करने के लिए एक इंट है कि उपयोगकर्ता द्वारा दर्ज किया गया नाम एक वैध पूर्ण नाम है, जिसके लिए मुझे उपयोगकर्ता को केवल चार्ज बनाने की आवश्यकता है, या मान्य है कि कोई इंक नहीं है स्ट्रिंग में उपयोगकर्ता दर्ज किया। सभी मदद के लिए धन्यवाद।कैसे जांचें कि एक स्ट्रिंग में int है या नहीं? -विफ़्ट

+0

Convert '' NSString' और आप उपयोग कर सकते हैं करने के लिए string.containsString (otherString) 'और बस जांचें कि इसमें कोई संख्या है या नहीं। – Kendel

+1

केवल पूर्णांक के लिए क्यों जांचें? ➽, ⨕, या मान्य वर्ण होंगे? –

+0

http://stackoverflow.com/questions/25651612/how-do-i-check-uitextfield-values-for- विशिष्ट-types-of-characters-e-g-letters का संभावित डुप्लिकेट। –

उत्तर

21

आप स्विफ्ट तार के साथ फाउंडेशन तरीकों का उपयोग कर सकते हैं से इन मिल गया, और यही वह है जो आपको यहां करना चाहिए। NSString ने उन विधियों में बनाया है जो NSCharacterSet का उपयोग यह जांचने के लिए करते हैं कि कुछ प्रकार के वर्ण मौजूद हैं या नहीं। यह स्विफ्ट के लिए अच्छी तरह से अनुवाद:

var str = "Hello, playground1" 

let decimalCharacters = CharacterSet.decimalDigits 

let decimalRange = str.rangeOfCharacter(from: decimalCharacters) 

if decimalRange != nil { 
    print("Numbers found") 
} 

आप सीमित क्या टाइप किया जा सकता है में रुचि रखते हैं, तो आप UITextFieldDelegate को लागू करना चाहिए और विधि textField(_:shouldChangeCharactersIn:replacementString:) पहली जगह में उन अक्षरों को टाइप करने से लोगों को रोकने के लिए।

+0

स्विफ्ट 3, चलो str =" नमस्ते, playground1 " जाने decimalCharacters = NSCharacterSet.decimalDigits जाने decimalRange = str.rangeOfCharacter (से: decimalCharacters, विकल्प: String.CompareOptions.literal, सीमा: शून्य)! अगर decimalRange = शून्य { प्रिंट ("नंबर मिले") } – Jeff

0

आप Regex का उपयोग करते हुए स्विफ्ट को ठगने के लिए अपने nsRegularExpression

class Regex { 
    let internalExpression: NSRegularExpression 
    let pattern: String 

    init(_ pattern: String) { 
    self.pattern = pattern 
    var error: NSError? 
    self.internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error) 
    } 

    func test(input: String) -> Bool { 
    let matches = self.internalExpression.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input))) 
    return matches.count > 0 
    } 

} ऊपर लपेटकर द्वारा की जरूरत है

if Regex("\\d/").test("John 2 Smith") { 
    println("has a number in the name") 
} 

मैं http://benscheirman.com/2014/06/regex-in-swift/

+0

प्रश्न * स्विफ्ट * प्रोग्रामिंग भाषा के बारे में था, जावास्क्रिप्ट के बारे में नहीं। बीटीडब्ल्यू, ए-जेड, ए-जेड से अधिक अक्षर हैं। के बारे में क्या है? –

+0

हालांकि यह एक स्ट्रिंग में अंकों का पता लगाने का सवाल जवाब देता है, शायद यह जांचना बेहतर हो सकता है कि स्ट्रिंग में सभी वर्ण वैध हैं (यानी शब्द शब्द या रिक्त स्थान) regex "^ [\\ w \\ s] + $ " –

2

इस विधि क्या मैं जाँच के लिए अब का उपयोग एक स्ट्रिंग एक नंबर

func doStringContainsNumber(_string : String) -> Bool{ 

     let numberRegEx = ".*[0-9]+.*" 
     let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx) 
     let containsNumber = testCase.evaluateWithObject(_string) 

     return containsNumber 
     } 

शामिल करता है, तो अपने स्ट्रिंग एक नंबर इसे किसी और सच अवास्तविक लौटाते हैं शामिल हैं है। आशा है कि यह मदद करता है

0
if (ContainsNumbers(str).count > 0) 
{ 
    // Your string contains at least one number 0-9 
} 

func ContainsNumbers(s: String) -> [Character] 
{ 
    return s.characters.filter { ("0"..."9").contains($0)} 
} 
2
 //Swift 3.0 to check if String contains numbers (decimal digits): 


    let someString = "string 1" 
    let numberCharacters = NSCharacterSet.decimalDigits 

    if someString.rangeOfCharacter(from: numberCharacters) != nil 
    { print("String contains numbers")} 
    else if someString.rangeOfCharacter(from: numberCharacters) == nil 
    { print("String doesn't contains numbers")} 
1

स्विफ्ट 2.3। संस्करण काम कर रहा है।

extension String 
{ 
    func containsNumbers() -> Bool 
    { 
     let numberRegEx = ".*[0-9]+.*" 
     let testCase  = NSPredicate(format:"SELF MATCHES %@", numberRegEx) 
     return testCase.evaluateWithObject(self) 
    } 
} 

उपयोग:

//guard let firstname = textField.text else { return } 
    let testStr1 = "lalalala" 
    let testStr2 = "1lalalala" 
    let testStr3 = "lal2lsd2l" 

    print("Test 1 = \(testStr1.containsNumbers())\nTest 2 = \(testStr2.containsNumbers())\nTest 3 = \(testStr3.containsNumbers())\n") 
1

सरल स्विफ्ट 4 संस्करण String वर्ग से rangeOfCharacter विधि का उपयोग कर:

let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits) 
    let hasNumbers = (numbersRange != nil) 
संबंधित मुद्दे