NSArray*arr = @[@"ram",@"Ram",@"vinoth",@"kiran",@"kiran"];
NSSet* uniqueName = [[NSSet alloc]initWithArray:arr];
NSLog(@"Unique Names :%@",uniqueName);
,但我需要的輸出作爲
NSArray*arr = @[@"ram",@"Ram",@"vinoth",@"kiran",@"kiran"];
NSSet* uniqueName = [[NSSet alloc]initWithArray:arr];
NSLog(@"Unique Names :%@",uniqueName);
,但我需要的輸出作爲
#Updated 使用這種刪除大寫你的數組中的字符串。
NSMutableArray *arr= [[NSMutableArray alloc]initWithObjects:@"ram",@"Ram",@"vinoth",@"kiran", nil];
NSMutableArray *arrCopy = [[NSMutableArray alloc]init];
for (int index = 0 ; index<arr.count; index++) {
NSUInteger count = [[[[arr objectAtIndex:index] componentsSeparatedByCharactersInSet:[[NSCharacterSet uppercaseLetterCharacterSet] invertedSet]] componentsJoinedByString:@""] length];
if (count == 0) {
[arrCopy addObject:[arr objectAtIndex:index]];
}
}
NSLog(@"Print Mutable Copy %@",arrCopy);
看看我的問題我需要不區分大小寫 –
我已經更新了我的答案。檢查它 –
創建一個與arr
大小相同的可變數組。用lowercaseString
版本的每個元素arr
填充它。解決這個問題。
問題不在於改變陣列成員的情況。 – zaph
你可以在這裏解釋一下你的代碼 –
@Zaph - 當我閱讀它時,問題是關於創建一組獨特的字符串,如果情況被忽略。通過創建一個代理字符串數組作爲考慮事項已被刪除,結果集應具有OP要求的值。 –
試試這個:
NSArray *arr = [NSArray arrayWithObjects:@"Ram",@"ram", nil]; //this is your array
NSMutableArray *arr1 = [[NSMutableArray alloc]init]; //make a nsmutableArray
for (int i = 0; i<[arr count]; i++) {
[arr1 addObject:[[arr objectAtIndex:i]lowercaseString]];
}
NSSet *set = [NSSet setWithArray:(NSArray*)arr1];//this set has unique values
感謝它的偉大工作 –
我從來不知道NSSet。 「請記住,NSSet由獨特的元素組成,所以這是刪除數組中所有重複項的便捷方式」+1 –
你可以首先將它們全部轉換爲小寫的字符串。
NSArray *arr = @[@"ram",@"Ram",@"vinoth",@"kiran",@"kiran"];
NSArray *lowerCaseArr = [arr valueForKey:@"lowercaseString"];
NSSet* uniqueName = [[NSSet alloc] initWithArray:lowerCaseArr];
NSLog(@"Unique Names :%@",uniqueName);
唯一的名稱:{( RAM, 基蘭, vinoth )}
簡明!這假定OP想要小寫所有的值,這個問題在這個問題上沒有形成。 – zaph
試試這個
NSArray *copyArray = [mainArray copy];
NSInteger index = [copyArray count] - 1;
for (id object in [copyArray reverseObjectEnumerator]) {
if ([mainArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) {
[mainArray removeObjectAtIndex:index];
}
index--;
}
copyArray=nil;
這將始終保持這是在原來的容器中現有的外殼形式(雖然它沒有定義哪個外殼):
NSArray<NSString*>* input = ...
NSMutableDictionary* tmp = [[NSMutableDictionary alloc] init];
for (NSString* s in input) {
[tmp setObject:s forKey:[s lowercaseString]];
}
return [tmp allValues];
如果有重複的情況下,但在其他方面相同的工作,你想如何選擇哪一個? – zaph