Objective-C中的NSString比较问题
代码如下:Objective-C中的NSString比较问题,objective-c,nsstring,Objective C,Nsstring,代码如下: NSString *decryptResponseString = [AESCrypt decrypt128:responseString key:@"a16byteslongkey!"]; NSString *lisence = [NSString createLisence:self.serial withSalt:sha_salt]; NSLog(@"lisence: %@", lisence); NSLog(@"decrypt: %@", decryptRes
NSString *decryptResponseString = [AESCrypt decrypt128:responseString key:@"a16byteslongkey!"];
NSString *lisence = [NSString createLisence:self.serial withSalt:sha_salt];
NSLog(@"lisence: %@", lisence);
NSLog(@"decrypt: %@", decryptResponseString);
int a = [lisence isEqualToString:decryptResponseString]?1:0;
NSLog(@"%i", a);
这是日志:
2012-12-16 15:52:30.249文本标签按钮[1430:11303]lisence:3b27cde24235d08a5de5904a42012-12-16 15:52:30.250文本标签按钮[1430:11303]解密:3b27cde24235d08a5de5904a4
2012-12-16 15:52:30.250文本标签按钮[1430:11303]0
我不知道为什么当我使用
[lisence isEqualToString:decryptResponseString]
或(lisence==decryptResponseString)
时,结果总是“0”我会检查字符串长度是否相同
如果不是,如果两端都有空格,那么这取决于字符串生成函数
例如,如果您想去掉前导字符串和尾随字符串,请使用NSString的方法
NSString *trimmedString = [strimToTrim stringByTrimmingCharactersInSet:[NSCharacterSet whiteSpaceCharacterSet]];
您可以阅读它的文档一个消除空格的解决方法:
id trimmedDecrypt = [decrypt stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
BOOL r = [license isEqualToString:trimmedDecrypt];
你确定它们是一样的吗?没有多余的空格吗?是的,我现在就检查我不知道为什么当我检查两个字符串的长度时,会有不同:2012-12-16 16:19:43.970 TextLabelButton[1478:11303]lisence的长度:25 2012-12-16 16:19:43.970 TextLabelButton[1478:11303]解密的长度:32 lisence的长度:25,解密的长度:32?您的AESCrypt使用什么库?您试过了吗?@trungho尝试使用[[NSCharacterSet alphaNumericCharacterSet]inversedset]作为stringByTrimmingCharactersInSet:的参数,看看是否有效。这将删除除数字和字母以外的任何内容(以防字符串中有非打印字符)。谢谢,我已经解决了这个问题,我认为这两个字符串之间的差异是由于我使用的AESCrypt造成的。所以我将两者都改为char*,然后进行比较:const char*lisence_str=[lisence UTF8String];const char*decrypt_str=[decryptResponseString UTF8String];并使用strcmp(lisence_str,decrypt_str)比较它们是否不同。成功了!