2012-01-17 10 views
0

私はシンプルだが奇妙な問題があります。私は文字列(異なるxmlから取ったもの)と比較して、一致するかどうかを調べます。私がNSLog経由で変数をトレースすると、同じように見えますが、明らかにそうではありません。だから私はそれがエンコーディングで何かをしなければならないと思うが、私は何がわからない。誰でも助けますか?NSLogの値が等しくてもNSOrderedSameはYESではありません

私は、文字列が同じ長さではないことが判明、しかし、私は空白を見つけることができません。

コード:

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が存在しますが、ここで私のプロジェクト全体をアップロードすることはできません。だから誰かが答えを知っていればいいと思う。

ありがとうヴォルフガング

+0

変数の種類は何ですか?ここに署名付き/署名なしの問題があります。 – jv42

答えて

1

データとして文字列をロギングしてみてください。それは可能印刷できない文字を参照すること、文字列の進ダンプを出力します

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

あなたの文字列の1つが改行で始まるようです。お試しください:

movieId = [movieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
mymovieId = [mymovieId stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+0

ありがとうございます!実際には、6進数が異なります。しかし、それは空白についてではありません(上記の編集された質問を参照してください)。 hexvaluesは以下のとおりです。 mymovieId: MOVIEID: だから私は何ができるのでしょうか? –

+0

データによって異なりますが、それらはロジックで等しい必要があるためです。 –

+0

最初の文字列は "\ n90045351"で、2番目の文字列は "75175343"です。つまり完全に異なる2つの文字列を出力し、最初の文字列は改行文字で始まります。 –

0

(すなわち、文字列のいずれかの範囲を含む)

[NSString compare: options: range:]

を使用してみてください。

私の推測では、文字列の最後に空白があります(XML結果の1つから来ています)。それらの2つの文字列の長さを確認すると、確実に表示されます。

+0

長さが等しくない、あなたは正しいです!しかし、それは空白についてではありません。上記の編集された質問を参照してください。 –

+0

多分空白ではないかもしれません。おそらくCRまたはLFです。知るか。ポイントは、2つの短い文字列を見つけて、短い文字列の長さ(または「範囲」)に基づいて文字列を比較します(次に、その短い文字列を前方に使用します。文字は)。 –

関連する問題