NSArray*arr = @[@"ram",@"Ram",@"vinoth",@"kiran",@"kiran"];
NSSet* uniqueName = [[NSSet alloc]initWithArray:arr];
NSLog(@"Unique Names :%@",uniqueName);
输出:
但我需要输出为
答案 0 :(得分:3)
您可以先将它们全部转换为小写字符串。
NSArray *arr = @[@"ram",@"Ram",@"vinoth",@"kiran",@"kiran"];
NSArray *lowerCaseArr = [arr valueForKey:@"lowercaseString"];
NSSet* uniqueName = [[NSSet alloc] initWithArray:lowerCaseArr];
NSLog(@"Unique Names :%@",uniqueName);
唯一名称:{( 内存, 基兰, vinoth )}
答案 1 :(得分:1)
试试这个:
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
答案 2 :(得分:1)
这将始终保留原始容器中存在的外壳形式(虽然它未定义哪个外壳):
NSArray<NSString*>* input = ...
NSMutableDictionary* tmp = [[NSMutableDictionary alloc] init];
for (NSString* s in input) {
[tmp setObject:s forKey:[s lowercaseString]];
}
return [tmp allValues];
答案 3 :(得分:0)
#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);
答案 4 :(得分:0)
创建一个与arr
大小相同的可变数组。填写lowercaseString
的每个元素的arr
个版本。设置出来。
答案 5 :(得分:0)
尝试这个
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;