2010-10-07 51 views

回答

0
NSString* firstLetter; 

for(NSString* currentString in yourArray) 
{ 
    firstLetter = [NSString stringWithFormat:@"%c", [currentString characterAtIndex:0]]; 
    if([firstLetter isEqualToString:@"c"]) 
    { 
      // NAME OK 
    } 
    else 
    { 
     // NAME WRONG 
    } 
} 
+0

为什么%d?你试过这个吗? – 2011-02-01 14:34:59

+0

糟糕!编辑 – MathieuF 2011-02-01 16:20:09

+1

这是非常低效的。它为'yourArray'中的每个项目创建一个新的格式化字符串并执行字符串比较。 – rpetrich 2011-03-12 07:40:58

3

另一种方式做,这是enumerateObjectsUsingBlock

[yourArray enumerateObjectsUsingBlock:^(id name,NSUInteger idx,BOOL *stop) { 
    if ([name characterAtIndex:0] == 'c') { 
      NSLog(@"Name begins with c: %@",name); 
    } 
}]; 

(也请注意,你想测试除了“C”“C”,如果你的输入是不是所有小写)

+0

+1。我感兴趣的是为什么你选择了块枚举而不是for循环。个人喜好或特定原因? – 2011-02-01 14:44:35

+0

如果您希望在第一场比赛中停止搜索,那么使用块(* stop = true)比使用直接'for ... in'快速枚举更容易。如果需要,块构造也可以更容易并行化操作(在' - [NSArray enumerateObjectsWithOptions:usingBlock:]'上使用'NSEnumerationConcurrent'选项)。 – 2011-02-01 14:50:07

+0

它还可以轻松访问对象的索引,在使用快速枚举时需要更多的工作。 – Abizern 2011-02-18 12:25:08