2011-11-10 13 views
2

NSArrayで検索するには?私は休閑のような配列を持っています

NSArray*array = [NSArray arrayWithObjects:@"1.1 something", @"1.2 something else", @"1.3 out of left field", @"1.4 yet another!", nil]; 

さて、私は休閑のような文字列を持っています、それは、アレイ内のそのSTRを見つける必要がある.Then

NSString*str = @"1.3"; 

は、今私はSTRを送信しますそのテキストが見つかった場所のオブジェクトのインデックスを返す必要があります。私はインデックス2が必要です。output.Can誰もコードを共有することができますplease.Thanks事前にあります。

+1

データセットを変更して、より正確に質問することを意味するものを反映させました。文字列間で唯一の数字だったので、古いデータセットは人々を捨てていました。 – Chuck

答えて

1

NSString *searchString = [str stringByAppendingFormat: @" problem%@", [str substringFromIndex: 2]]; 
NSUInteger index = [array indexOfObject: searchString]; 

または(あなた何とかonelinersのような理由を)試してみてください。

[array indexOfObject: [[array filteredArrayUsingPredicate: [NSPredicate predicateWithFormat: @"SELF beginswith %@", str]] objectAtIndex: 0]]; 
+0

私は何も変えません。私は同じ配列と同じstring.Andを持っています私は1.3 onlyyyyyyyy.thenを送信しますインデックスをしたい。私は今あなたは物事を持っていると思います。 – Univer

+0

2番目の答えで編集しました。 – Jef

2

最初のコメント、

NSString *str = 1.3; 

NSStringオブジェクトを作成できません。あなたが代わりにNSArrayを検索するには

NSString *str = @"1.3"; 

を持っている必要があり、あなたはどちらかの配列に正確な文字列に文字列を変更したり、同様NSStringを検索する必要があります。かつてのために、単にあなたにもNSPredicate Sを使用して手の込んだ得ることができます

float num = 1.3; 
NSString *str = [NSString stringWithFormat:@"%.1f problem%d",num,(num*10)%10]; 

[array indexOfObject:str]; 

を行います。ここ

+0

いいです。しかし、もし私が完全なものを送ったとしても、直接のメソッドindexOfObjectはありますが、私は1.3を送信します。ちょっと質問を読んでください。 – Univer

8

は方法に気づく、ブロックを用いた例である。hasPrefix:

NSArray *array = [NSArray arrayWithObjects:@"1.1 problem1", @"1.2 problem2", @"1.3 problem3", @"1.4 problem4", nil]; 
NSString *str = @"1.3"; 

NSUInteger index = [array indexOfObjectPassingTest: 
        ^(id obj, NSUInteger idx, BOOL *stop) { 
         return [obj hasPrefix:str]; 
        }]; 

NSLog(@"index: %lu", index); 

のNSLog出力:

index: 2 
0

最も簡単な方法は、配列の値を列挙し、サブストリングをチェックすることである。

NSArray *array = [NSArray arrayWithObjects: @"1.1 something", @"1.2 something else", @"1.3 out of left field", @"1.4 yet another!", nil]; 
NSString *str = @"1.33"; 
int i = -1; 
int index = -1; 
for (NSString *arrayString in array) { 
    i++; 
    if ([arrayString rangeOfString: str].location != NSNotFound) { 
     index = i; 
     break; 
    } 
} 
NSLog(@"Index: %d", index); 

最適ではありませんが動作します。

関連する問題