字符串数组排序/分组

//获取字符串(或者汉字)的首字母

-(NSString*)firstCharacterWithString:(NSString *)string

{

NSMutableString *str = [NSMutableString stringWithString:string];

CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO);

CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);

NSString *pingyin = [str capitalizedString];

return [pingyin substringFromIndex:1];

}

//将字符串属猪按照元素首字母进行排序分组

-(NSDictionary *)dictonaryOrderByCharaterWithOriginalArray:(NSArray *)array

{

if (array.count == 0) {

return nil;

}

for (id obj in array) {

if (![obj isKindOfClass:[NSString class]]) {

return nil;

}

}

UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];

NSMutableArray *objects =[NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];

for (int i = 0; i < indexedCollation.sectionTitles.count; i++) {

NSMutableArray *array = [NSMutableArray array];

[objects addObject:array];

}

NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];

//按字母顺序分组

NSInteger lastIndex = -1;

for (int i = 0; i < array.count; i ++) {

NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];

[[objects objectAtIndex:index]addObject:array[i]];

lastIndex = index;

}

//去掉空数组

for (int i = 0; i<objects.count; i++) {

NSMutableArray *obj = objects[i];

if (obj.count  == 0) {

[objects removeObject:obj];

}

}

//获取索引字母

for (NSMutableArray *obj in objects) {

NSString *str = obj[0];

NSString *key = [self firstCharacterWithString:str];

[keys addObject:key];

}

NSMutableDictionary *dic = [NSMutableDictionary dictionary];

[dic setObject:objects forKey:keys];

return dic;

}

时间: 2024-08-28 14:51:35

字符串数组排序/分组的相关文章

写一个函数对字符串数组排序,使所有变位词都相邻

题目 写一个函数对字符串数组排序,使得所有的变位词都相邻. 解答 首先,要弄清楚什么是变位词.变位词就是组成的字母相同,但顺序不一样的单词. 比如说:live和evil就是一对变位词.OK,那么这道题目的意思就很清楚了, 它并不要求我们将字符串数组中的字符串按字典序排序,否则我们直接调用STL中的sort 函数就可以了.它要求我们在排序的过程中,按照变位词的准则来排序. 这种情况下,我们还是可以调用sort函数,不过要自己写一个对比函数. 一般情况下我们如果要排序一个长度为n的数组A,我们可以这

java基础知识回顾之---java String final类普通方法的应用之字符串数组排序

/* * 1,给定一个字符串数组.按照字典顺序进行从小到大的排序. * {"nba","abc","cba","zz","qq","haha"} *  * 思路: * 1,对数组排序.可以用选择,冒泡都行. * 2,for嵌套和比较以及换位. * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象. *   字符串对象怎么比较呢?爽了,对象中提供了用于字符串对象比较的功能

C# 使用Dictionary、linq实现根据集合里面的字符串进行分组

分组两种方法: List<string> list = new List<string>() { "1_32", "2_10", "1_8", "1_25", "2_3", "3_5", "5_15", "3_16" }; //对上面集合里面的字符串按照“_”进行分组. #region //使用字典,键值对集合保存分组数据.

Objective-C 对字符串数组排序

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSArray* array = [NSArray arrayWithObjects:@"RaspBerry", @"Peach", @"Banana", @"BlackBerry", @"BlueBerry"

Android中使用ExpandableListView实现好友分组

一个视图显示垂直滚动两级列表中的条目.这不同于列表视图,允许两个层次,类似于QQ的好友分组.要实现这个效果的整体思路为: 1.要给ExpandableListView 设置适配器,那么必须先设置数据源. 2.数据源,就是此处的适配器类,此方法继承了BaseExpandableListAdapter,它是ExpandableListView的一个子类.需要重写里面的多个方法.方法的意思,代码中都有详细的注释.数据源中,用到了自定义的View布局,此时根据自己的需求,来设置组和子项的布局样式.get

使用NSSortDescriptor对字符串数组进行排序

NSSortDescriptor 指定用于对象数组排序的对象的属性. 如果是Employee对象需要按照name来排序,就生成下面的descriptor NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:name ascending:YES]; 如果需要多个排序,比如先按name排序,再按入职日期排序.那就创建两个descriptor NSSortDescriptor *descriptor = [NSS

冒泡算法,递归,正则表达式,模块,格式化字符串的整理

一.冒泡排序原理整理图 二.递归流程图剖析 三.正则表达式内容整理 1.re模块:python中re模块提供了正则表达式相关操作 2.元字符的整理 .  ^  $  *  +  ?  {}  []  |  \ 3.   .   匹配除换行符以外的任意字符(可以通过加参数re.S匹配上换行符) \w 匹配字母或数字或下划线或汉字 \s  匹配任意的空白符 \d  匹配数字 \b  匹配单词的开始或结束 ^   匹配字符串的开始 $  匹配字符串的结束 4.   * 重复零次或更多次(常用的) +

字符串数组qsort排序

#include <iostream> #include <stdlib.h> using namespace std; int cmp(const void * a,const void *b) //qsort库要求参数const { return strcmp((char *)a,(char *)b) ; //字典序从小到大 //return strcmp((char *)b,(char *)a) ; //字典序从大到小 } int main() { char s[3][4]=

java中字符串操作方法整理

最近在参加各大公司的笔试,发现好多都是有关字符串的操作的编程题,自己掌握的不够扎实,所以在网上找了一些资料,进行了一下总结. 一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:二类是在程序中会被改变长度的可变字符串.Java环境为了存储和维护这两类字符串提供了 String和StringBuffer两个类. 一.创建字符串例: String str=new("This is a Strin