例如,[request responseString]我的servlet发送给我的iphone应用程序的值是“myinfo”。在我的iphone应用程序中,我创建了一个这样的字符串:
NSString *str = @"myinfo";
然后我还有其他
if([responseString isEqualToString:str]){
NSLog(@"condition true");
}else{
NSLog(@"condition false");
}
在控制台中它总是显示“条件错误”。有什么问题?是不是isEqualToString是写方法来检查字符串是否相等?提前谢谢。
答案 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
}