別の文字列の最初の2文字に1文字の文字列が表示されるかどうかを調べようとしています。文字列を==およびisEqualToStringNSStringメソッドと比較しようとしました。私のコードが一致するものを見つけられない理由を誰かが知っていますか?常に0を返します。文字bは単語の2番目の文字の位置(最初のパラメーター)にあり、文字(2番目のパラメーター)と一致する必要があるため、メソッドが2を返すようにします。
主な方法:
Finder *f = [[Finder alloc]init];
int position = [f findLetterLocation : @"abc" : @"b"];
NSLog(@"using == %d", position);
int position2 = [f findLetterLocation2 : @"abc" : @"b"];
NSLog(@"using isEqualToString %d", position);
Finder.m
-(int)findLetterLocation: (NSString*)word : (NSString*)letter{
NSRange MyOneRange = {1, 1};
NSRange MyTwoRange = {2, 1};
NSString *firstCharacter = [[NSString alloc] init];
NSString *secondCharacter = [[NSString alloc] init];
firstCharacter = [word substringWithRange:MyOneRange];
secondCharacter = [word substringWithRange:MyTwoRange];
if(firstCharacter == letter){
return 1;
}
if(firstCharacter == letter){
return 2;
}
return 0;
}
findLetterLocation2は上記のメソッドとまったく同じですが、ifステートメントを以下のステートメントに置き換えるだけです。
if([firstCharacter isEqualToString: letter]){
return 1;
}
if([firstCharacter isEqualToString: letter]){
return 2;
}
出力は
2012-12-29 18:14:51.253 test[83101:303] using == 0
2012-12-29 18:14:51.255 test[83101:303] using isEqualToString 0
ありがとう!