J'essaie de valider le code IFSCCode dans Swift, mais le problème auquel je suis confronté est que je ne parviens pas à récupérer les quatre premières lettres d'une chaîne.
Exemple de code IFSC:
ABCD0200000
Voici à quoi ressemble un code IFSC:
J'ai écrit du code pour la validation du code ifs dans Objective C, mais je ne suis pas familier dans Swift, ce qui pose un problème de réplication identique dans Swift.
Voici le code que j'ai écrit en Objective C:
- (BOOL)validateIFSCCode:(NSString*)ifsccode {
if (ifsccode.length < 4) {
return FALSE;
}
for (int i = 0; i < 4; i++) {
if (![[NSCharacterSet letterCharacterSet]
characterIsMember:[ifsccode characterAtIndex:i]]) {
return FALSE;
}
}
if (ifsccode.length < 10) {
return FALSE;
}
if ([ifsccode characterAtIndex:4] != '0') {
return FALSE;
} else {
return TRUE;
}
}
Dans Swift 3
func validateIfscCode(_ ifscCode : String) -> Bool{
if(ifscCode.characters.count < 4){
return false;
}
for( _ in 0 ..< 4){
let charEntered = (ifscCode as NSString).character(at: i)
}
if(ifscCode.characters.count < 10){
return false;
}
let idx = ifscCode[ifscCode.index(ifscCode.startIndex, offsetBy: 4)]
print("idx:%d",idx)
if (idx == "0"){
}
return true
}
Ceci est une validation simple utilisant une expression régulière. Le motif représente:
^
doit être le début de la chaîne[A-Za-z]{4}
= quatre caractères A-Z ou a-z0
un zéro.{6}
six caractères arbitraires$
doit être la fin de la chaîneMis à jour à Swift 4
func validateIFSC(code : String) -> Bool {
let regex = try! NSRegularExpression(pattern: "^[A-Za-z]{4}0.{6}$")
return regex.numberOfMatches(in: code, range: NSRange(code.startIndex..., in: code)) == 1
}
PS: Pour répondre à votre question, vous obtenez les 4 premiers caractères de Swift 3 avec
let first4 = code.substring(to:code.index(code.startIndex, offsetBy: 4))
et dans Swift 4 simplement
let first4 = String(code.prefix(4))
Le moyen le plus simple d’obtenir le préfixe d’une chaîne est avec
// Swift 3
String(string.characters.prefix(4))
// Swift 4
string.prefix(4)
// Objective C
NSString *firstFour = [string substringToIndex:4];
Swift 5
string.prefix(4) // Replace 4 with number of letters you want to get from the string
Cela fonctionne sur Xcode 10.2.