webentwicklung-frage-antwort-db.com.de

Wie prüfe ich, ob ein String ein int enthält? -Schnell

Ich muss wissen, ob eine Zeichenfolge ein Int enthält, um sicherzugehen, dass ein vom Benutzer eingegebener Name ein gültiger vollständiger Name ist. Zeichenfolge, die der Benutzer eingegeben hat .. Vielen Dank für die Hilfe. 

13
Arbel Israeli

Sie können Foundation-Methoden mit Swift-Strings verwenden. Dies sollten Sie hier tun. NSString verfügt über integrierte Methoden, die mithilfe von NSCharacterSet prüfen, ob bestimmte Zeichenarten vorhanden sind. Das lässt sich gut zu Swift übersetzen:

var str = "Hello, playground1"

let decimalCharacters = CharacterSet.decimalDigits

let decimalRange = str.rangeOfCharacter(from: decimalCharacters)

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

Wenn Sie daran interessiert sind, die Eingabe einzuschränken, sollten Sie UITextFieldDelegate und die Methode textField(_:shouldChangeCharactersIn:replacementString:) implementieren, um zu verhindern, dass Personen diese Zeichen überhaupt eingeben.

31
Tom Harrington

Einfache Swift 4 Version mit rangeOfCharacter-Methode aus String-Klasse:

    let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
    let hasNumbers = (numbersRange != nil)
9
        //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")}
3
Lukasz D

Diese Methode benutze ich jetzt, um zu überprüfen, ob eine Zeichenfolge eine Zahl enthält

func doStringContainsNumber( _string : String) -> Bool{

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

        return containsNumber
        }

Wenn Ihre Zeichenfolge eine Zahl enthält, wird true zurückgegeben, sonst false. Ich hoffe es hilft

2
Joker

Schnell 2.3. Version funktioniert.

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

Verwendungszweck:

//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
Darkwonder

let numericCharSet = CharacterSet.init (charactersIn: "1234567890")

let newCharSet = CharacterSet.init (charactersIn: "~ @ # $% ^ & * () {} [] <>?")

let satz = "Tes # ting4 @ Charact2er1Seqt"

        if sentence.rangeOfCharacter(from: numericCharSet) != nil {

            print("Yes It,Have a Numeric")
            let removedSpl = sentence.components(separatedBy: newCharSet).joined()
            print(sentence.components(separatedBy: newCharSet).joined())
            print(removedSpl.components(separatedBy: numericCharSet).joined())
        }
        else
        {
            print("No")
        }
0
user10834996

Sie müssen Swift mit Regex umgehen, indem Sie seine nsRegularExpression einpacken 

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")
}

Ich habe diese von http://benscheirman.com/2014/06/regex-in-Swift/

0
Clay Sills
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)}
}
0
Miika Pakarinen