0

我有一个简单但奇怪的问题。我与字符串(取自不同的 xml)进行比较,以确定它们是否匹配。如果我通过 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!

由于我的原始数据,肯定存在这个问题,但我不能在这里上传我的整个项目,所以我希望有人知道答案。

感谢沃尔夫冈

4

2 回答 2

1

尝试将字符串记录为数据:

NSLog(@"mymovieId: %@", [mymovieId dataUsingEncoding:NSUnicodeStringEncoding]);
NSLog(@"movieId: %@", [movieId dataUsingEncoding:NSUnicodeStringEncoding]);

这将打印字符串的十六进制转储,从而可以看到不可打印的字符。

从您的评论看来,您的其中一个字符串以换行符开头。尝试这个:

movieId = [movieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
mymovieId = [mymovieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
于 2012-01-17T19:36:08.757 回答
0

try using

[NSString compare: options: range:]

(i.e. include a range of one of the strings).

My guess is that you have some white space at the end of your string (coming from one of the XML results). Checking the length of those two strings will show you for certain.

于 2012-01-17T19:33:17.623 回答