NSString isEqualToString 明明相等,比较失败的原因。



NSString *messageType = [messageTypesArray objectAtIndex:1]; if([messageType isEqualToString:@"06"]) //回复位置 { NSString *additionalMessage =[messageTypesArray objectAtIndex:5]; additionalMessage = [additionalMessage stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSLog(@"additionalMessage is:%@",additionalMessage); if([additionalMessage isEqualToString:@"Fail"]) { NSLog(@"TRUE"); } }

  今天写程序遇到一个问题,NSLog输出的明明是Fail,拿去勇isEqualToString比较却始终不执行 输出TURE的语句,很邪门。试了很久:

   去除空格和换行符,  还有一些其他的方法都不成功。在google上看到有人说,输出2者的字符串长度看看,我着加了

NSLog(@"additionalMessage length: %d",additionalMessage.length);//控制台输出900多

NSLog(@"Fail length:%d",@"Fail".length);//控制台输出4

  

  竟然第一个的长度会是900多,我想应该会是这个additionMessage获取的是服务器上的,而服务器是在客户端上传的一个字符串的末尾加了Fail;但服务器是用的Win平台的,客户端IOS;可能因为这个原因,服务器传过来的数据加上了一些 不容易发觉的空格,如“制表符”之类。

  后来我在去除首尾空格的后面加了

             

additionalMessage = [additionalMessage   stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];

  

如下语句解决问题。我也不清楚controlCharacterSet是什么字符集。但是问题解决了,希望给后来人帮助。

posted @ 2012-10-16 12:34  yessir  阅读(3014)  评论(1编辑  收藏  举报