2011-12-11 9 views
3

NSArrayのNSStringがimageNameという名前の文字列の部分文字列であるかどうかをチェックしたいと思います。NSArrayのNSStringを含む文字列の部分文字列を確認しますか?

だから、これを言うことができます:

  1. 私のイメージの名前は次のとおりです。picture5of-batman.png
  2. 私の配列は、文字列が含まれ、そのうちの一つがある:バットマン

ので、かなり私が欲しいですイメージ名の:picture5of-部分を取り除き、NSArrayからNSStringに置き換えます。

これは私がそれをやろうとする方法ですが、ifステートメントにはなりません。そして、私の配列もnilではありません。ここでは、コードは次のようになります。

for (NSString *string in superheroArray) { 
    if ([string rangeOfString:imageName].location != NSNotFound) { 
     //Ok so some string in superheroArray is equal to the file name of the image 
     imageName = [imageName stringByReplacingOccurrencesOfString:@"" withString:string 
                 options:NSCaseInsensitiveSearch range:NSMakeRange(0, string.length)]; 

    } 
} 

EDIT1:これはまだ、それは多分、あなたのコードで働いていない理由を私は見ていない

for (NSString *string in superheroArray) { 
     if ([imageName rangeOfString:string options:NSCaseInsensitiveSearch].location != NSNotFound) { 
      //Ok so some string in superheroArray is equal to the file name of the image 
      imageName = string; 
      //HOW ABOUT THAT FOR EFFICIENCY :P 
     } 

}

答えて

5
[imageName rangeOfString:string options: NSCaseInsensitiveSearch] 
+0

私のedit1をチェックしてください。 –

+0

どうすれば簡単に_やスペースを取り除くことができますか? –

2

を動作しません。 NSRageテストからNSStringを分割します。
しかし、ここで、この作品:

 NSArray *ar = [NSArray arrayWithObjects:@"Batman", @"Maurice", nil]; 
__block NSString *imageName = @"picture5of-batman.png"; 
__block NSUInteger theIndex = -1; 
[ar enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    NSRange r = [imageName rangeOfString: obj 
        options: NSCaseInsensitiveSearch]; 
    if (r.location != NSNotFound) 
    { 
     theIndex = idx; 
     NSString *str = [imageName pathExtension]; 
     imageName = [(NSString *)obj stringByAppendingPathExtension:str]; 
     // you found it, so you can stop now 
     *stop = YES; 
    } 
}]; 

if (theIndex != -1) 
{ 
    NSLog(@"The index is : %d and new imageName == %@", theIndex, imageName); 
} 

そして、ここではのNSLog文です:

2011-12-10 23:04:28.967 testSwitch1 [2493:207]インデックスは次のとおりです。0と新しいimagenameの= = Batman.png

+0

okしかし、実際に一致する見つかった文字列を含めるにはどうすればimageNameを変更するのですか? –

+0

最終結果は何ですか?あなたの質問では、バットマンバットマン.pngで終わりたいと提案しているからです。それはあなたが欲しいものですか? –

+0

いいえBatman.png –

関連する問題