2011-09-06 114 views
3

例如,我的s​​ervlet发送给我的iPhone应用程序的[request responseString]的值是“myinfo”。在我的iPhone应用程序,我犯了这样的一个字符串:如何检查[request responseString]是否等于其他字符串?

NSString *str = @"myinfo"; 

那么我的if else

if([responseString isEqualToString:str]){ 
    NSLog(@"condition true"); 

}else{ 
     NSLog(@"condition false"); 
} 
控制台

它总是呈现 “条件为假”。有什么问题? isEqualToString是写方法来检查字符串是否相等?提前致谢。

+2

确定的字符串是完全平等的(方法是区分大小写) –

+1

它不应该是[要求responseString] isEqualToString:STR] ?或者,你是否将[request responseString]赋给一个名为responseString的变量,但没有将其包含在示例代码中? –

+0

是啊对不起,我没有提到我写这个:NSString responseString = [request responseString];并在控制台中都显示myinfo。 – Piscean

回答

2

NSString方法isEqualToString是在这里使用的正确的东西。您可以通过添加日志,以你的方法做了仔细的检查:

NSLog(@"responseString = %@",responseString); 
NSLog(@"str = %@",str); 

if([responseString isEqualToString:str]){ 
    NSLog(@"condition true"); 

}else{ 
    NSLog(@"condition false"); 
} 

记住NSString s为大小写敏感的,所以这两个字符串必须出现完全一样的。

+0

responseString = myinfo和str = myinfo。两个 – Piscean

+5

完全相同的日志我会建议在'NSLog'的字符串周围放一些分隔符。这样你就可以看到前后的白色空间。例如'NSLog(@“str = <%@>”,str);' – JeremyP

3

不管你认为你的两个字符串是完全相等的,他们不是。相信我,如果-isEqualToString:没有返回YES两个相等的字符串,有人会注意到在20多年来它已经成为Cocoa API的一部分。

我怀疑你的两个字符串中有一个包含一些非打印字符。您可能有换行符或空格或制表符。另一种可能性(我最近遇到的一种可能性)是,对于某些字符集编码,您可以创建一个带有nul字符的NSString。如果它最后,它不会出现。尝试记录两个字符串的长度,或使用UTF16编码将它们转换为NSData对象并记录它们。

1

既然你说过使用连接,有时网络检索的数据很奇怪,你应该先将数据编码成一个字符串,然后NSLog记录它是否有特殊字符。

NSString *response = [[NSString alloc] initWithData:dataRetrieved encoding:NSUTF8StringEncoding]; 

然后你可以确定你的[request responseString]没有得到特殊的字符。

0

更好的方式在IOS比较字符串:

NSString *responseString = <your string>; 
NSString *string2 = <your string>; 

if ([responseString caseInsensitiveCompare:string2] == NSOrderedSame) { 
    //strings are same 
} else { 
    //strings are not same 
} 
+0

您刚刚发布这个帖子作为其他帖子的答案。最好通过评论发布一个答案并链接到另一个答案。 –

相关问题