-1
votes

Validation de Textfield à l'aide de Personnierset

J'ai écrit ci-dessous le code pour valider la saisie de texte dans Textfield.

else if (textField == txtField_Password)
    {
        let charSet = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@$&*!")
        let charLength = (txtField_Password.text!.count) + (string.count) - range.length

        for i in 0..<string.count
        {
            let c = (string as NSString).character(at: i)
            if (!((charSet as NSCharacterSet).characterIsMember(c)))
            {
                return false
            }
        }
        return (charLength > 20) ? false : true
    }


0 commentaires

4 Réponses :


0
votes

Vous pouvez travailler avec quelque chose le long de ces lignes. J'apprécie que cela est un peu rugueux et prêt, mais devrait fonctionner:

charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@$&*!"

if txtField_Password.text!.count <= 20 {

    for i in 0..<str.count
    {
        let c = Array(str)[i]

        let cString = String(c)

        if charSet.contains(cString) {
            return false
           }
        }

    } else {
        return false
    }


1 commentaires

Textfield ne devrait accepter que 20 caractères. Pouvez-vous s'il vous plaît éditer votre réponse en fonction du code ci-dessus.



0
votes

Utiliser rangeofcharacter : xxx


4 commentaires

J'essayais de mettre en œuvre votre réponse mais le résultat de SearchText n'est pas utilisé.


Vous pouvez supprimer en toute sécurité SearchText. Ça devrait marcher sans ça


Oui, cela fonctionne mais je veux aussi avoir une vérification de la longueur du personnage, comment puis-je la mettre en œuvre.


La longueur de votre champ de texte?



4
votes

Vous pouvez simplifier la logique simplement en cochant la plage de l'ensemble de caractères inversé. Si la chaîne contient uniquement des caractères autorisés, la fonction renvoie nil . xxx


2 commentaires

J'ai mis en œuvre votre réponse et cela fonctionne. Je voulais juste demander pourquoi utiliser UTF8 dans string.utf8.count


Un seul caractère peut contenir plus d'un octet, comptant la représentation UTF8 de la chaîne le rend plus cohérent.



1
votes

Notez qu'il existe un moyen plus simple de mettre en œuvre ce que vous voulez utiliser une expression régulière: xxx


4 commentaires

Pourquoi utiliser Nstring?


@YASHARUNJADHAV parce que Remplacement des véhicteurs avec Nsrange est défini uniquement sur Nstring et en utilisant nsrange avec Swift String est fondamentalement impossible. Notez que Newtext est une chaîne .


Pouvez-vous s'il vous plaît essayer de mettre en œuvre votre réponse avec seulement Swift.


@YASHARUNJADHAV C'est pur Swift. Vous ne pouvez pas ignorer le fait que uikit a été écrit dans Objective-C et utilise des types Objective-C tels que Nsrange .