2014-09-02 63 views
2

我想检测我的字符串的第一个字母。如何检查字符串的第一个字符是iOS中的字母或特定符号?

我限制,-,_0-9用户不能首先输入UITextField。但是假设用户条目abc.4c并且在之前设置了交叉词。并删除abc,那么字符串将是.4c &当用户单击提交按钮时,其未验证。那么我如何检查第一个字母是我的字符串中的一个字母或特定符号?

+0

有你经历https://developer.apple.com/library/ios/的第一个字母文档/ uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html – 2014-09-02 11:00:15

+0

@iosDev是否可以删除字符串中的所有特殊字符和数字..?您的要求全部填写。 – ilesh 2014-09-02 11:00:59

+0

您可以使用regx – BHASKAR 2014-09-02 11:04:13

回答

3

我1周:) &之前遇到这个问题我是能解决的。我分享我的代码请检查

NSRange textfieldfirstText = [yourtextfield.text rangeOfComposedCharacterSequenceAtIndex:0]; 
NSRange textfieldmatchText = [yourtextfield.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet] options:0 range:textfieldfirstText]; 

if (textfieldmatchText.location != NSNotFound) 
{ 
    NSLog(@"checking..."); 
} 
else 
{ 
    NSLog(@"not checking..."); 
} 

请检查与此。我认为这对你有用。

+0

嗨SR Nayak。十分感谢。它的工作正常,我解决了我的问题。所以我也给你投票并接受你的回答:) – 2014-09-02 11:42:32

+0

谢谢。享受你的编码:) – 2014-09-02 11:43:25

+0

我认为你需要第一个字符不应该。 - _ 0 1 2 3 4 5 6 7 8 9但上面的代码是不是检查这个 – BHASKAR 2014-09-02 11:58:36

2
[@"your_string" characterAtIndex:0]; 

,或者你可以用正则表达式的尝试:

NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", @"^[0-9_\.-]"]; 
BOOL isConformingToRegex = [p evaluateWithObject:@"your_string"]; 
+0

这不是工作伙计。总是去其他部分。 NSPredicate * p = [NSPredicate predicateWithFormat:@“SELF MATCHES [c]%@”,@“regex_string”]; BOOL isValid = [p evaluateWithObject:emailField.text]; (有效) if(isValid) { printf(“valid string ...”); } else { printf(“Invalid string ...”); } – 2014-09-02 11:38:17

+0

编辑我的答案。 PS:如果你正在寻找类似电子邮件的字符串检查,我会建议这是正则表达式字符串:(?:[a-z0-9!#$%\\&'* +/=?\\^_'{| }〜 - ] +(?!?\\ [A-Z0-9#$%&\\'* +/= \\^_'{|}〜 - ] +)* | \“(?: [\\ X01 - \\ X08 \\ X0B \\ X0C \\ x0e - \\ X1F \\ X21 X23 \\ - \\ x5b \\ X5D - \\ 0x7F部分] | \\\\ [\\ x01- \ \ X09 \\ X0B \\ X0C \\ x0e - \\ 0x7F部分])* \“)@(:(:[α-Z0-9](:???[A-Z0-9 - ] * [A- Z0-9])\\)+ [A-Z0-9](?:???[A-Z0-9 - ] * [A-Z0-9])| \\ [(:(?: 25 [0-5] | 2 [0-4] [0-9] |?。[01] [0-9] [0-9])\\){3}(?: 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9] |?[A-Z0-9 - ] * [A-Z0-9] :(?:[\\ X01 - \\ X08 \\ X0B \\ X0C \\ x0e - \\ X1F \\ X21 - \\ X5A \\ X53 - \\ 0x7F部分] | \\\\ [\\ X01 - \\ X09 \\ x0b \\ x0c \\ x0e - \\ x7f])+)\\]) – grimdox 2014-09-02 12:00:19

2

您可以使用此检查

if(textField.text.length>0){ 
    NSString *newStr = [textField.text substringToIndex:1]; 
    if ([newStr intValue]>0 || [newStr isEqualToString:@"."] || [newStr isEqualToString:@"0"] || [newStr isEqualToString:@"-"] || [newStr isEqualToString:@"_"]) { 
     NSLog(@"First charecter is wrong"); 
    } 
} 
+0

我的要求是第一个字符不应该是。 - _ 0 1 2 3 4 5 6 7 8 9 – 2014-09-02 11:18:52

1

NSString * str = @“%bc%sa”;

NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"] invertedSet]; 

NSString *Strq = [str substringToIndex:1]; 

BOOL valid = [[Strq stringByTrimmingCharactersInSet:notAllowedChars] isEqualToString:@""]; 
if (valid) { 
    // Its a Symbol 
} 
else 
{ 
    // letter or numbers 
} 
0

试试这能带给你只能从整个字符串

NSString *codeString; 
NSString *firstLetter = [[codeString substringFromIndex:0] substringToIndex:1]; 

if([firstLetter isEqualToString:@"."]) 
{ 
NSLog(@"Wrong character to start with..."); 
} 
相关问题