2015-12-18 9 views
10

Wie kann ich überprüfen, ob searchView nur Zahlen enthält?Wie bestätigen Sie, dass eine Zeichenfolge nur Zahlen in Swift enthält?

Ich fand dies:

if newText.isMatchedByRegex("^(?:|0|[1-9]\\d*)(?:\\.\\d*)?$") { ... } 

aber es überprüft, ob Text eine beliebige Anzahl enthält. Wie kann ich das tun, wenn der gesamte Text nur Zahlen in Swift enthält?

+0

Versuchen Sie entfernen es in Parsen ein Int. Wenn es etwas anderes als int gibt, wird ein Fehler ausgelöst. – ShahiM

+0

Wie kann ich es mit einem kurzen Weg machen? @ShahiM –

Antwort

31

Hier ist die Lösung, die Sie alle Ziffern von String zu bekommen.

Swift 3.0:

let testString = "asdfsdsds12345gdssdsasdf" 

let phone = testString.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "") 

print(phone) 
+0

Wird dieses NSCharacterSet arabischen Typ von Zahlen enthalten? Ich meine, vielleicht braucht der Benutzer nur diese Art von Nummern (1, 2, 3, 4, ...), aber die Tastatur kann auch solche Nummern (123) enthalten. Wie kann ich nur (1, 2, 3) überprüfen? –

+1

@ СергейОлейнич, wenn Sie sicher sein wollen, dass nur bestimmte Zeichen in Ihrem Set enthalten sind, können Sie den Zeichensatz mit '+ characterSetWithCharactersInString:' method definieren. ([Quelle] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCharacterSet_Class/#//apple_ref/occ/clm/NSCharacterSet/characterSetWithCharactersInString :)) – holex

+0

@holex Danke Sie) –

-3

sollte diese Arbeit:

func isNumeric(string: String) -> Bool 
{ 
    let number = Int(string) 
    return number != nil 
} 
+4

Dies funktioniert nicht, wenn die Zeichenfolge zu lang ist und das Ergebnis nicht in ein 'Int' passt. Es gibt in diesem Fall "Null" zurück. Versuchen Sie eine Zeichenfolge mit "20" Ziffern. – vacawama

2

Sie eine oder mehrere Ziffern akzeptieren Diese "^[0-9]+$" instade "^(?:|0|[1-9]\\d*)(?:\\.\\d*)?$"

verwenden können, wenn Sie nur eine Ziffer akzeptieren wollen, dann +

+0

Was ist mit Floating-Nummern? oder Negative? Sind das nicht mehr Nummern? – holex

+0

"^ [0-9] + (\. [0-9] +)? $" Dies wird die Floating-sowie Intigers übereinstimmen, wenn Sie nur Dezimal akzeptieren wollen dann verwenden Sie "^ [0-9] + \ . [0-9] + $ " – NSAnant

+0

in der Tat. Aus diesem Grund ist nicht klar, warum Sie explizit _not_ empfehlen, um das zu verwenden. – holex

Verwandte Themen