string - convertir - ¿Cómo verificar si una cadena contiene un int?-Rápido
string to int swift 4 (7)
Tienes que engañar a Swift para que use Regex completando su 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")
}
Los obtuve de http://benscheirman.com/2014/06/regex-in-swift/
Necesito saber si una cadena contiene un int para asegurarme de que el nombre que el usuario ingresó es un nombre completo válido, para eso necesito hacer que el usuario escriba solo caracteres, o que no haya entradas en la cadena. ingresó. Gracias por toda la ayuda.
Este método es el que uso ahora para verificar si una cadena contiene un número
func doStringContainsNumber( _string : String) -> Bool{
let numberRegEx = ".*[0-9]+.*"
let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
let containsNumber = testCase.evaluateWithObject(_string)
return containsNumber
}
Si su cadena contiene un número, devolverá true else false. Espero eso ayude
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. versión funcionando.
extension String
{
func containsNumbers() -> Bool
{
let numberRegEx = ".*[0-9]+.*"
let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
return testCase.evaluateWithObject(self)
}
}
Uso:
//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")
Puede usar los métodos de Foundation con Swift Strings, y eso es lo que debe hacer aquí. NSString
ha incorporado métodos que usan NSCharacterSet
para verificar si ciertos tipos de caracteres están presentes. Esto se traduce muy bien a Swift:
var str = "Hello, playground1"
let decimalCharacters = CharacterSet.decimalDigits
let decimalRange = str.rangeOfCharacter(from: decimalCharacters)
if decimalRange != nil {
print("Numbers found")
}
Si está interesado en restringir lo que se puede escribir, debe implementar UITextFieldDelegate
y el método textField(_:shouldChangeCharactersIn:replacementString:)
para evitar que las personas textField(_:shouldChangeCharactersIn:replacementString:)
esos caracteres en primer lugar.
Versión simple Swift 4 utilizando el método rangeOfCharacter
de String
clase String
:
let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
let hasNumbers = (numbersRange != nil)