swift3 - opiniones - acer swift 3 review
¿Cómo obtener las primeras cuatro letras de una cuerda en Swift 3? (2)
Esta es una validación simple usando expresiones regulares. El patrón representa:
-
^
debe ser el comienzo de la cadena -
[A-Za-z]{4}
= cuatro caracteres AZ o az -
0
uno cero -
.{6}
seis personajes arbitrarios -
$
debe ser el final de la cadena
func validateIFSC(code : String) -> Bool {
let regex = try! NSRegularExpression(pattern: "^[A-Za-z]{4}0.{6}$")
return regex.numberOfMatches(in: code, range: NSRange(location:0, length: code.characters.count)) == 1
}
PD: Para responder a tu pregunta, obtienes los primeros 4 caracteres en Swift 3 con
let first4 = code.substring(to:code.index(code.startIndex, offsetBy: 4))
Estoy tratando de hacer la validación de IFSCCode de forma rápida, pero el problema al que me estoy enfrentando es que no puedo recuperar las primeras cuatro letras de una cadena.
Ejemplo de Código IFSC:
ABCD0200000
Así es como se ve un Código IFSC:
- Los primeros cuatro caracteres en el código IFSC son siempre alfabetos
- El quinto personaje es siempre un cero.
- Y el descanso puede ser cualquier cosa.
- La longitud del Código IFSC no debe ser mayor o menor que 11. Debe tener una longitud de 11.
He escrito código para la validación del código ifs en Objective C, pero no soy tan familiar en Swift, así que tengo un problema para replicar lo mismo en Swift.
El siguiente es el código que he escrito en el Objetivo 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;
}
}
En 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
}
La forma más fácil de obtener el prefijo de una cadena es con
// Swift 3
String(string.characters.prefix(4))
// Swift 4
string.prefix(4)