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
}
4 Réponses :
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
}
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.
Utiliser rangeofcharacter code>:
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?
Vous pouvez simplifier la logique simplement en cochant la plage de l'ensemble de caractères fort> inversé. Si la chaîne contient uniquement des caractères autorisés, la fonction renvoie nil code>.
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.
Notez qu'il existe un moyen plus simple de mettre en œuvre ce que vous voulez utiliser une expression régulière:
Pourquoi utiliser Nstring?
@YASHARUNJADHAV parce que Remplacement des véhicteurs code> avec Nsrange code> est défini uniquement sur Nstring code> et en utilisant nsrange code> avec Swift String code> est fondamentalement impossible. Notez que Newtext code> est une chaîne code> code>.
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 code> a été écrit dans Objective-C et utilise des types Objective-C tels que Nsrange code>.