我尝试使用特殊字符
验证文本字段但是,按下键盘上的删除按钮。文本归档数据未删除。
我使用此代码验证Textfield,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet * invalidNumberSet = [NSCharacterSet characterSetWithCharactersInString:@"_!@#$%^&*()[]{}'\"<>:;|\\/?+=~`"];
if([[string stringByTrimmingCharactersInSet:invalidNumberSet]isEqualToString:@""])
{
return NO;
}
else
{
return YES;
}
}
请告诉我,我该怎么做?
答案 0 :(得分:2)
创建这样的Common函数来实现您的功能
-(BOOL)isNumeric:(NSString *)pTmpString
{
BOOL isValid = YES;
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"_!@#$%^&*()[]{}'\"<>:;|\\/?+=~`"];
for (int i = 0; i < [pTmpString length]; i++)
{
unichar c = [pTmpString characterAtIndex:i];
if ([myCharSet characterIsMember:c])
isValid = NO;
}
return isValid;
}
并将其用作
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
BOOL isValid = [self isNumeric:string];
return isValid;
}
虽然您按下键盘上的字母,但这不会接受键盘到文本字段的特殊字符。
如果您有任何疑问,请告诉我......我会帮助您..
希望这会对你有所帮助..
答案 1 :(得分:0)
对于防止那些特殊的词我建议这可能会有所帮助,并且有很多选项可以阻止这种类型的字符串匹配,这是我建议你的方式之一。
if([string isEqualToString:@"_"] || [string isEqualToString:@"@"] || [string isEqualToString:@"#"] || [string isEqualToString:@"$"] || [string isEqualToString:@"%"] || [string isEqualToString:@"^"] || [string isEqualToString:@"&"] || [string isEqualToString:@"*"] || [string isEqualToString:@"("] || [string isEqualToString:@")"] || [string isEqualToString:@"["] || [string isEqualToString:@"]"] || [string isEqualToString:@"{"] || [string isEqualToString:@"'"] || [string isEqualToString:@"\""] || [string isEqualToString:@"\\"] || [string isEqualToString:@"<"] || [string isEqualToString:@">"]|| [string isEqualToString:@":"]|| [string isEqualToString:@";"]|| [string isEqualToString:@"|"]|| [string isEqualToString:@"/"]|| [string isEqualToString:@"?"]|| [string isEqualToString:@"+"] || [string isEqualToString:@"="]|| [string isEqualToString:@"~"] ) {
return NO;
}else{
return YES;
}
另一种选择是Regex。 希望这对你有所帮助。