我有一个简单而奇怪的问题。我比较字符串(取自不同的xmls),以确定它们是否匹配。如果我通过NSLog跟踪变量,它们看起来是一样的,但显然不是。所以我想它必须用它的编码做一些事情,但我不知道是什么。有人帮忙吗?
我发现字符串的长度不一样,但我找不到空格:
代码:
NSString* value1 = [mymovieId stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString* value2 = [movieId stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@ == %@", mymovieId, movieId);
NSLog(@"%i / %i", value1.length, value2.length);
if ([value1 compare:value2] == NSOrderedSame) {
NSLog(@"YES!");
} else {
NSLog(@"NO!");
}
结果:
2012-01-17 20:40:06.044 Appname[6307:f803] 75175343 == 75175343
2012-01-17 20:40:06.044 Appname[6307:f803] 9 / 8
2012-01-17 20:40:06.045 Appname[6307:f803] NO!
当然由于我的rawdata存在这个问题onyl,但是我不能在这里上传我的整个项目,所以我希望有人知道答案。
Thanx Wolfgang
答案 0 :(得分:1)
尝试将字符串记录为数据:
NSLog(@"mymovieId: %@", [mymovieId dataUsingEncoding:NSUnicodeStringEncoding]);
NSLog(@"movieId: %@", [movieId dataUsingEncoding:NSUnicodeStringEncoding]);
这将打印字符串的十六进制转储,从而可以看到不可打印的字符。
从您的评论中看起来您的某个字符串以换行符开头。试试这个:
movieId = [movieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
mymovieId = [mymovieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
答案 1 :(得分:0)
尝试使用
[NSString compare: options: range:]
(即包括其中一个字符串的范围)。
我的猜测是你的字符串末尾有一些空格(来自其中一个XML结果)。检查这两个字符串的长度将显示您的确定。