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是什么字符集。但是问题解决了,希望给后来人帮助。