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