前言
常见的通讯录都是按首字母来排序的,想象一下你要实现一个首字母排序的功能,若是全英文,那将会是一件很轻松的事情,一般语言层面就会提供排序方法,亦或自己实现也不是难事,那如果存在中文呢?这个时候你就要获取中文第一个文字的拼音首字母了,今天聚焦一下如果获取中文的首字母。
技术要点
技术要点主要在找到中文和首字母的映射关系,正好GB 2312编码对所收汉字进行了“分区”处理,16-55区为一级汉字,按拼音排序,因此使用GB 2312编码可以满足我们的基本需求。
方案
获取中文字符串的第一个字符
将第一个字符编码转为GBK编码(GBK编码是对GB2312编码的扩展,完全兼容GB2312-80标准)
获取第一个字符的16进制
将第一个字符的16进制转十进制
判断第一个字符十进制落在GB 2312的某个字母区间即为某个字母
具体DEMO实现
// 获取中文字符串第一个首字母
上述完整demo可以戳这里:demo
总结
主要难点在于GB 2312编码的结构,不懂的小伙伴可以去了解一下GB 2312编码。