我有以下數組和搜索字符串。如何匹配NSArray中的字符串部分值objective-c
NSArray *values =[NSArray arrayWithObjects:@"abc",@"xyz",@"cba",@"yzx",nil];
NSString *search = @"startcba";
我想在數組元素中搜索字符串的末尾部分。我的預期搜索結果將是@「cba」。請讓我知道如何找到數組中的願望值來進行搜索。
感謝,
我有以下數組和搜索字符串。如何匹配NSArray中的字符串部分值objective-c
NSArray *values =[NSArray arrayWithObjects:@"abc",@"xyz",@"cba",@"yzx",nil];
NSString *search = @"startcba";
我想在數組元素中搜索字符串的末尾部分。我的預期搜索結果將是@「cba」。請讓我知道如何找到數組中的願望值來進行搜索。
感謝,
您可以使用NSPredicate
得到滿足您的要求的元素。
NSPredicate * predicate = [NSPredicate predicateWithFormat:@" %@ ENDSWITH SELF ", search];
NSArray * searchResults = [values filteredArrayUsingPredicate:predicate];
您可以在謂詞中指定'c'和'd'來區分大小寫和變音符不靈敏。因此,謂詞格式看起來像這樣:「@」%@ ENDSWITH [cd] SELF「' – EmptyStack
感謝Deepak和EmptyStack提供簡單和精確的解決方案。 – AmitSri
NSPredicates的方式是偉大的。
這裏是rangeOfString的方法:
NSArray *values =[NSArray arrayWithObjects:@"abc",@"xyz",@"cba",@"yzx",nil];
NSString *search = @"startcba";
NSUInteger searchLength = [search length];
NSString *result = nil;
for (NSString *val in values)
{
NSUInteger valLength = [val length];
NSRange expectedRange = NSMakeRange(searchLength - valLength, valLength);
NSRange rng = [search rangeOfString:val];
if (rng.location == expectedRange.location && rng.length == expectedRange.length)
{
result = val;
break;
}
}
謝謝,你的rangeOfString方法和deepak的方法一樣好,它也可以讓我在同一個循環中找到項目的索引。對不起,我必須接受deepak的答案,因爲它正是我所需要的。我感謝你的寶貴幫助。 – AmitSri
總是最後三個字符?如果是這樣,獲取子字符串併發送'[myArray indexOfObject:myString]'。 – 2011-07-22 12:06:14
對不起,它可以是任意長度,如:\t NSArray * values = [NSArray arrayWithObjects:@「abc」,@「xyz」,@「cba」,@「yzx」,@「Abcd」,nil]; \t \t NSString * search = @「startabcd」; – AmitSri