如何检查[request responseString]是否等于其他字符串?

时间:2011-09-06 14:15:31

标签: objective-c ios xcode nsstring

例如,[request responseString]我的servlet发送给我的iphone应用程序的值是“myinfo”。在我的iphone应用程序中,我创建了一个这样的字符串:

 NSString *str = @"myinfo";

然后我还有其他

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

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

在控制台中它总是显示“条件错误”。有什么问题?是不是isEqualToString是写方法来检查字符串是否相等?提前谢谢。

4 个答案:

答案 0 :(得分:3)

你认为你的两个字符串是完全相同的,但事实并非如此。相信我,如果-isEqualToString:没有返回YES两个相同的字符串,那么有人会在20多年内发现它已成为Cocoa API的一部分。

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

答案 1 :(得分:2)

NSString方法isEqualToString在这里使用是正确的。您可以通过向方法添加日志来进行健全性检查:

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

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

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

请记住,NSString是区分大小写的,因此两个字符串必须完全相同。

答案 2 :(得分:1)

由于你说你正在使用连接,有时候网页检索的数据很奇怪,你应该首先用字符串编码数据,然后用NSLog来查看它是否有特殊字符。

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

然后你可以确定你的[request responseString]是不是得到了特殊的字符。

答案 3 :(得分:0)

比较ios中字符串的更好方法:

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

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