switch initialize functions array cocoa nsstring special-characters

cocoa - initialize - switch en swift 3



Comprueba NSString por caracteres especiales (5)

Quiero comprobar un NSString para caracteres especiales, es decir, cualquier cosa excepto az, AZ y 0-9.

No necesito verificar cuántos caracteres especiales están presentes, o sus posiciones, solo necesito saber si una cadena en particular contiene alguno o no. Si lo hace, entonces quiero poder mostrar "¡Error!", O algo similar.

Por ejemplo, jHfd9982 está bien pero asdJh992 @ no.

Además, las letras con acentos, signos diacríticos, etc. no deben permitirse.

¿Cómo voy a hacer esto?

¡Gracias!

Miguel


Aquí el código que puede usar para verificar la cadena tiene algún carácter especial o no

NSString *string = <your string>; NSString *specialCharacterString = @"!~`@#$%^&*-+();:={}[],.<>?////"/'"; NSCharacterSet *specialCharacterSet = [NSCharacterSet characterSetWithCharactersInString:specialCharacterString]; if ([string.lowercaseString rangeOfCharacterFromSet:specialCharacterSet].length) { NSLog(@"contains special characters"); }


Desea buscar NSString utilizando un juego de caracteres si no encuentra ningún carácter en la cadena, entonces rangeOfCharacterFromSet: devolverá un rango de {NSNotFound, 0}

El conjunto de caracteres sería como [NSCharacterSet symbolCharacterSet] o tu propio conjunto. Tenga en cuenta que también puede invertir conjuntos de caracteres para que pueda tener un conjunto de caracteres aceptables


Este código solo permite números en la entrada UITextField.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([string rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound) return NO; else return YES; }


Si desea eliminar caracteres especiales y números de cualquier cadena (incluso el texto del campo de texto), mientras está editando, estas líneas a continuación son bastante útiles:

#define ACCEPTABLE_CHARACTERS @"!~`@#$%^&*-+();:=_{}[],.<>?///|/"/'0123456789" - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; return (![string isEqualToString:filtered]) ? NO : YES; }


NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet]; if ([aString rangeOfCharacterFromSet:set].location != NSNotFound) { NSLog(@"This string contains illegal characters"); }

También podría usar una expresión regular (esta sintaxis es de RegexKitLite: http://regexkit.sourceforge.net ):

if ([aString isMatchedByRegex:@"[^a-zA-Z0-9]"]) { NSLog(@"This string contains illegal characters"); }