ho bisogno di sapere se una stringa contiene un int per essere sicuri che un nome l'utente ha inserito è un nome valido e completo, per che ho bisogno di fare sia il tipo di utente solo caratteri, o valido che non ci sono interi nella stringa che l'utente ha inserito. Grazie per tutto l'aiuto.Come verificare se una stringa contiene un int? -SWIFT
risposta
È possibile utilizzare i metodi della Fondazione con le stringhe Swift, e questo è quello che dovresti fare qui. NSString
è costruito in metodi che usano NSCharacterSet
per verificare se sono presenti alcuni tipi di caratteri. Questo si traduce bene a Swift:
var str = "Hello, playground1"
let decimalCharacters = CharacterSet.decimalDigits
let decimalRange = str.rangeOfCharacter(from: decimalCharacters)
if decimalRange != nil {
print("Numbers found")
}
Se siete interessati a limitare ciò che può essere digitato, è necessario implementare UITextFieldDelegate
e il metodo textField(_:shouldChangeCharactersIn:replacementString:)
per impedire alle persone di digitare i caratteri in primo luogo.
Swift 3, lasciate str = "Ciao, playground1" lasciare decimalCharacters = NSCharacterSet.decimalDigits lasciare decimalRange = str.rangeOfCharacter (da: decimalCharacters, opzioni: String.CompareOptions.literal, range: zero)! se decimalRange = nil { stampa ("numeri trovati") } – Jeff
È necessario ingannare Swift ad utilizzare Regex avvolgendo la sua 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")
}
ho ottenuto questi da http://benscheirman.com/2014/06/regex-in-swift/
La domanda riguardava l'* Swift * linguaggio di programmazione, non si tratta di JavaScript. A proposito, ci sono più lettere di a-z, A-Z. Che ne dici di Ä o é? –
Anche se questo risponde alla domanda di cifre di posizionamento in una stringa, forse potrebbe essere migliore per verificare se tutti i caratteri nella stringa sono validi (ad esempio, caratteri di parola o spazi) usando l'espressione regolare "^ [\\ w \\ s] + $" –
Questo metodo è quello che uso ora per verificare se una stringa contiene un numero
func doStringContainsNumber(_string : String) -> Bool{
let numberRegEx = ".*[0-9]+.*"
let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
let containsNumber = testCase.evaluateWithObject(_string)
return containsNumber
}
Se la stringa contiene un numero che restituirà true altro falso. Speranza che aiuta
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)}
}
//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")}
Swift 2.3. versione funzionante.
extension String
{
func containsNumbers() -> Bool
{
let numberRegEx = ".*[0-9]+.*"
let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
return testCase.evaluateWithObject(self)
}
}
Usage:
//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")
semplice Swift 4 versione utilizzando rangeOfCharacter
metodo da String
classe:
let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
let hasNumbers = (numbersRange != nil)
Converti in 'NSString' ed è possibile utilizzare' string.containsString (otherString) 'e basta controllare se contiene un numero. – Kendel
Perché controllare solo per numeri interi? Sarebbe ➽, ⨕, o essere un personaggio valido? –
Eventuali duplicati di http://stackoverflow.com/questions/25651612/how-do-i-check-uitextfield-values-for-specific-types-of-characters-e-g-letters. –