确定字符串的第一个字符是否为1

时间:2011-11-30 19:12:52

标签: iphone ios

基本上我正在做一些看起来像手机应用程序键盘的东西。其他所有东西都按照它应该输入,但是我想弄清楚的是当最后一个输入1时,如果最后一个输入该数字将看起来像1(555)555-5555。我确定我的代码需要对substringfromindexes进行一些调整以使其匹配,但我现在想要发生的只是检查输入的字符串第一个数字是否为1。因为如果不是,它将绕过这部分代码。

else if ([self.self.enteredPhoneNumberString length] == 11 && [self.enteredPhoneNumberString characterAtIndex:0] == '1') {
        NSString *firstNum = [self.enteredPhoneNumberString substringToIndex:1];
        NSString *createFirst = [self.enteredPhoneNumberString substringFromIndex:3];
        NSString *firstThree = [createFirst substringToIndex:3];
        NSString *createSecond = [self.enteredPhoneNumberString substringFromIndex:3];
        NSString *secondThree = [createSecond substringToIndex:3];
        NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:6];
        self.label.text = [NSString stringWithFormat:@"%@ (%@) %@-%@", firstNum, firstThree, secondThree, lastSet];
    }

如果你知道调整substrinFromIndex以获得效果的方法,我也会采取一切措施,这将节省我的时间篡改,直到我找到正确的顺序。在此先感谢您的帮助。 :)

哦,顺便说一下上面的代码,当我到达代码中的这一部分时,它做了一个断点。

FIX:

感谢您现在所有的帮助。结束这样做,由于某种原因断点在这里完成时不会发生。

else if ([self.self.enteredPhoneNumberString length] >= 11 ) {
    if ([self.enteredPhoneNumberString characterAtIndex:0] == '1' && [self.self.enteredPhoneNumberString length] == 11) {
        NSString *firstNum = [self.enteredPhoneNumberString substringToIndex:1];
        NSString *createFirst = [self.enteredPhoneNumberString substringFromIndex:1];
        NSString *firstThree = [createFirst substringToIndex:3];
        NSString *createSecond = [self.enteredPhoneNumberString substringFromIndex:4];
        NSString *secondThree = [createSecond substringToIndex:3];
        NSString *lastSet = [self.enteredPhoneNumberString substringFromIndex:7];
        self.label.text = [NSString stringWithFormat:@"%@ (%@) %@-%@", firstNum, firstThree, secondThree, lastSet];
    }
    else{
       self.label.text = [NSString stringWithFormat:@"%@", enteredPhoneNumberString]; 
    }
}

而且,检查长度是否再次为11似乎毫无意义,但因为它导致了前一种方式的问题,所以我没有多少选择,因为我需要知道它是否超过11或者不是这样它可以开始做那个。

3 个答案:

答案 0 :(得分:2)

上面的if语句可能是你的代码启动的真实...

else if ([self.self.enteredPhoneNumberString length] == 11 && [self.enteredPhoneNumberString characterAtIndex:0] == '1') {

需要一些清理工作。你不应该在这里检查长度11,只检查长度> 0和第一个字符是否为1.执行必要的格式化,修剪空格和(),然后检查长度。 此外,self.self是一个潜在的问题,放弃第二个自我

请忽略CocoaFu的评论他的解决方案更好,但评论有误导性。

在以下代码中,我的日志语句显示在控制台中

NSString * test = [NSString stringWithString:@"test"];
unichar c = [adjusted characterAtIndex:0];

if (c == 't')   {
    NSLog(@"can compare char");
}

答案 1 :(得分:0)

if [[self.enteredPhoneNumberString substringToIndex:1] isEqualToString:@"1"] {

}

我认为这就是你要求的......

答案 2 :(得分:0)

第一个字符最简单的比较:

[self.enteredPhoneNumberString hasPrefix:@"1"]