1. 程式人生 > >通訊錄排序(按首字母順序)

通訊錄排序(按首字母順序)

效果:

1.使用

//模擬資料

-(void)loadData

{

NSArray *dataArr = @[

@"比昂",@"阿狸",@"阿三",@"小明",@"張三",@"秋秋",@"波比",@"蘇三",@"饅頭",@"彩筆",@"咪咪",@"蔡芯",@"成龍",@"陳鑫",@"陳丹",@"成名",@"阿偉",@"阿姨",@"芳仔",@"房祖名",@"方大同",@"芳芳",@"範偉",@"郭靖",@"郭美美",@"過兒",@"過山車"

];

NSLog(@"原始資料 ==>> %@",dataArr);

_MyData = [self Transformation:dataArr];

NSLog(@"資料轉換 ==>> %@",_MyData);

[self.MyTableViewreloadData];

}

2.核心程式碼 (排序)

- (NSMutableArray *)Transformation:(NSArray *)dataArray

{

NSMutableArray *TwoArr = [NSMutableArrayarray];

for (NSString *TransformationStr in dataArray)

{

NSMutableString *pinyin = [TransformationStr mutableCopy];

CFStringTransform

((__bridgeCFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);

CFStringTransform((__bridgeCFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);

[TwoArr addObject:pinyin];

}

NSMutableArray *ThreeArr = [NSMutableArrayarray];

for (__strong NSString *ScreenStr in

TwoArr)

{

ScreenStr = [ScreenStr substringToIndex:1];

if (ThreeArr.count == 0)

{

[ThreeArr addObject:ScreenStr];

}

else

{

BOOL bl = [ThreeArr containsObject:ScreenStr];

if (!bl)

{

[ThreeArr addObject:ScreenStr];

}

}

}

NSArray *FourArr = [ThreeArr sortedArrayUsingSelector:@selector(compare:)];

NSMutableArray *MyArr = [NSMutableArrayarray];

for (NSString *str in FourArr)

{

NSMutableDictionary *dic = [NSMutableDictionarydictionary];

[dic setObject:str forKey:@"title"];

NSMutableArray *arr = [NSMutableArrayarray];

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

{

NSString *missstr = TwoArr[i];

missstr = [missstr substringToIndex:1];

if ([str isEqualToString:missstr])

{

[arr addObject:dataArray[i]];

}

}

[dic setObject:arr forKey:@"info"];

[MyArr addObject:dic];

}

return MyArr;

}

相關推薦

通訊錄排序字母順序

效果: 1.使用 //模擬資料 -(void)loadData { NSArray *dataArr = @[ @"比昂",@"阿狸",@"阿三",@"小明",@"張三",@"秋秋",@"波

C++ STL map容器的排序key或value

template < class Key, // map::key_type class T,

關於城市列表字母排序、分組及查詢的一個解決方案mysql端java

最近要做一個城市列表,網上找了個城市列表往mysql裡面一匯入,OK!  再把城市id,名稱查出來放到list裡面丟給前端客戶端處理。 後面客戶端找過來了,這樣把資料扔過去他那邊不好處理,要求在後臺根據首字母分組之後再傳過去,然後找了一上午處理方法,總體來說有三種方案: 1

實現中等難度通訊錄。需求: 1、定義聯絡人類AddressContact。例項變數:姓名拼音,首字母大寫、性別、電話號碼、住址、分組名稱、年齡。方法:自定義初始化方法姓名、電話號碼、顯示聯絡人

<span style="font-size:24px;">// 1、定義聯絡人類AddressContact。例項變數:姓名(拼音,首字母大寫)、性別、電話號碼、住址、分組名稱、年齡。方法:自定義初始化方法(姓名、電話號碼)、顯示聯絡人資訊 { NS

mysql中文排序按照中文拼音順序排序

在MySQL資料庫中使用UTF-8的編碼進行排序會出現不按照中文拼音的順序排序 解決這個問題的方案是把編碼重新設定為GBK或者BG2312 但是問題又來了  資料庫重設編碼實在是個大問題  顯然不能這樣使用 同步百度發現convert()這個函式可以實現臨時編碼並且解

javaleetcode905 將陣列奇偶性排序Sort Array By Parity

題目描述: 給定一個非負整數陣列A,返回一個偶數在前,奇數在後的陣列。 示例: Input: [3,1,2,4] Output: [2,4,3,1] 以下三個輸出 [4,2,3,1], [2,4,1,3], [4,2,1,3] 也是正確結果 解題思路: 新建一個數組newA,

通訊錄排序c++

通訊錄排序(c++) 【問題描述】 建立一個通訊錄的結構記錄,包括姓名、生日、電話號碼。輸入n(n<10)個朋友的資訊,再按他們的年齡從大到小的順序依次輸出其資訊 【輸入形式】 先輸入朋友數n(整型,n<10),再依次輸入每個朋友的姓名(字串)、生日(整型)、和電話號

UILocalizedIndexedCollation -- 本地化下字母分組排序

關於通訊錄的專案就會有按首字母或者漢字拼音首字母分組排序索引。說說以前用的就是 比如把漢字轉成拼音再排序的方法了,不僅效率低,對其他語言的本地化更是行不通。偶然間在閱讀別人的程式碼時發現了UILocalizedIndexedCollation,於是搜尋相關資料,整理了一下。參考自文章http://n

Java編程實現中英混合字符串數組字母排序的方法

數組 鍛煉 呵呵 indexof pinyin file 附件 col 翻轉 在Java中對於字符串數組的排序,我們可以使用Arrays.sort(String[])方法很便捷的進行排序。例如: ? 1 2 3 4 5 6 7 String[] arra

js中文字母排序

var array = ['武漢', '北京', '上海', '天津','','am','pam','1213','123']; var resultArray = array.sort( function compareFunction(param1, param2) {

leetcode905 將陣列奇偶性排序Sort Array By Parity

題目描述: 給定一個非負整數陣列A,返回一個偶數在前,奇數在後的陣列。 示例: Input: [3,1,2,4] Output: [2,4,3,1] 以下三個輸出 [4,2,3,1], [2,4,

vue移動端城市列表字母排序元件包,有npm包,可直接下載使用

初衷,為各使用相關元件的小夥伴寫更少的相關程式碼實現功能,原始碼在我的被另一篇博文裡有,有興趣的可以去研究,使用過程中有問題的請即時反饋,謝了!qq(微信)591339209,有其他常用到的元件也可以反饋給我,酌情封裝!另外要是這個元件還有什麼需要優化,或者有哪裡使用還不方便

ios搜尋可實現模糊搜尋 支援拼音檢索 字母

一、搜框中輸入關鍵字的事件響應 -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ NSLog(@"輸入的關鍵字是---%@---%lu",s

習題9-5 通訊錄排序 20 分

輸入n個朋友的資訊,包括姓名、生日、電話號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。 輸入格式: 輸入第一行給出正整數n(<10)。隨後n行,每行按照“姓名 生日 電話號碼”的格式給出一位朋友的資訊,其中“姓名”是長度不超過10的英文

PTA習題9-5 通訊錄排序20 分

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct { char name[11]; int birth;

獲取一個類的名稱包括字母大寫和小寫

利用反射原理中的getSimpleName()方法和字串操作獲取 package demo; import com.yy.erp.auth.emp.vo.EmpModel; public class Test1 { @SuppressWarni

數字排序問題逆序,順序氣泡排序法,選擇排序

應用冒泡法發按逆序排列 #include <iostream> using namespace std; int main() { int a[11]= {2,5,2,4,3,8,

JS對省市字母排序

/** * 省市拼音排序 */ function pySegSort(arr, empty) { if(!String.prototype.localeCompare) re

通訊錄排序20分

題目: 輸入n個朋友的資訊,包括姓名、生日、電話號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。 輸入格式: 輸入第一行給出正整數n(<10)。隨後n行,每行按照“姓名 生日 電話號碼”的格式給出一位朋友的

冒泡排序泛型+委托

lar private sin () using 排序 pan sch i+1 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Th