jq:
var wrap = $('div');
var html =
wrapfind('a')
map(function(){//获取文字
return $trim($(this)text())
})
toArray()//转换jq为数组
sort(function(a , b){
return alocaleCompare(b)//按照顺序排序
})
map(function(txt){//拼接html
return '<a>' + txt + '</a>';
})
join('');
wraphtml(html);//输出
js:
function toArray(nodes){
return []slicecall(nodes , 0);
}
var wrap = documentquerySelector('div');
var links = wrapquerySelectorAll('a');
var html =
toArray(links)
map(function(el , i){//读取文字
return (elinnerText || eltextContent)trim();
})
sort(function(a , b){
return alocaleCompare(b)//按照顺序排序
})
map(function(txt){//组合html
return '<a>' + txt + '</a>';
})
join('');
wrapinnerHtml = html;//输出
方法:
2、将生成的拼音粘贴回excel,利用分列功能分成3列,每列都选文本格式;
3、按第三列(该列两字人名为空)排序,将空格排到下方;
4、在其后第一列第一行、第二行手动输入第一个、第二个人名首字母,选中两单元格,右键拖动拖动手柄至最下,松开鼠标,选“快速填充”;
5、此时,三字人名首字母提取完成,二字人名为空,在第一个二字名后手动输入首字母,下面首字母自动生成;
6、选中首字母列,开始菜单——“条件格式”——“突出显示单元格规则”——重复值,找出重复值,手动进行区分。
// 简体中文的编码范围从B0A1(45217)一直到F7FE(63486)
private static int BEGIN = 45217;
private static int END = 63486;
// 按照声母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
// i, u, v都不做声母, 自定规则跟随前面的字母
private static char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈',
'哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌',
'塌', '挖', '昔', '压', '匝', };
// 二十六个字母区间对应二十七个端点
// GB2312码汉字区间十进制表示
private static int[] table = new int[27];
// 对应首字母区间表
private static char[] initialtable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
't', 't', 'w', 'x', 'y', 'z', };
// 初始化
static {
for (int i = 0; i < 26; i++) {
table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。
}
table[26] = END;// 区间表结尾
}
// ------------------------public方法区------------------------
/
根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出
/
public static String cn2py(String SourceStr) {
String Result = "";
int StrLength = SourceStrlength();
int i;
try {
for (i = 0; i < StrLength; i++) {
Result += Char2Initial(SourceStrcharAt(i));
}
} catch (Exception e) {
Result = "";
}
return Result;
}
// ------------------------private方法区------------------------
/
输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0'
/
private static char Char2Initial(char ch) {
// 对英文字母的处理:小写字母转换为大写,大写的直接返回
if (ch >= 'a' && ch <= 'z')
return (char) (ch - 'a' + 'A');
if (ch >= 'A' && ch <= 'Z')
return ch;
// 对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,
// 若不是,则直接返回。
// 若是,则在码表内的进行判断。
int gb = gbValue(ch);// 汉字转换首字母
if ((gb < BEGIN) || (gb > END))// 在码表区间之前,直接返回
return ch;
int i;
for (i = 0; i < 26; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”
if ((gb >= table[i]) && (gb < table[i+1]))
break;
}
if (gb==END) {//补上GB2312区间最右端
i=25;
}
return initialtable[i]; // 在码表区间中,返回首字母
}
/
取出汉字的编码 cn 汉字
/
private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。
String str = new String();
str += ch;
try {
byte[] bytes = strgetBytes("GB2312");
if (byteslength < 2)
return 0;
return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);
} catch (Exception e) {
return 0;
}
}
//测试
public static void main(String[] args) throws Exception {
// Systemoutprintln(cn2py("云飞扬"));
//1从数据库取出名字集合
//比如
ArrayList list=new ArrayList();
listadd("张三");
listadd("李四");
listadd("王五");
listadd("张名");
listadd("敌法师");
listadd("分三");
ArrayList lis2=null;
Hashtable<String, ArrayList> table =new Hashtable<String, ArrayList>();
int count=listsize();
String chainName;
String allpy;
String fir;
for(int i=0;i<count;i++){
chainName=listget(i)toString();//中文
allpy= cn2py(chainName); //拼音
fir=allpysubstring(1); //首字母
lis2=tableget(fir);
if(lis2==null||lis2size()==0)
lis2=new ArrayList();
lis2add(chainName);
tableput(fir,lis2);
}
}
自己封装的一个工具类,可以将汉字按照拼音的首字母排序,支持对Model和字典排序只能对首字母排序,不支持第二个字母, 实现的原理就是创建一个A-Z的数组,数组中的元素是字典,字典中有两个元素,一个是title,就是当前的首字母 A-Z中的一个,另一个是保存当前title对应的元素的数组,对传入的数组进行遍历获得数组中的一个元素,如果是Model或者字典通过传入的key的值获得要排序的字符串,获得字符串的拼音的首字母,判断拼音的首字母是A-Z中的哪一个,然后放到数组中的对应的字典的数组中
后来又做了一个对英文的首字母排序的程序,原理和上面的一样,还省略了将汉字转化为拼音的步骤。工具类的名称是:NH_OrderByPinYinFirstLetter。
代码:使用的时候直接调用下面的方法就行,是一个加号方法,第一个参数是保存要排序的元素的数组,第二个参数:如果数组中是Model或者字典,就写排序的依据的key值,如果数组中不是Model或字典,就写nil。
[objc] view plain copy
// 方法
+ (NSMutableArray )baseOrderPinYinOnArr:(NSMutableArray )arr ByKey:(NSString )key 返回值的类
// 返回一个有24个元素的数组,数组里的元素是字典
// 字典里有两对键值对
// title : 当前的拼音首字母 A - Z
// datas : 当前的拼音首字母对应的model所组成的数组
/已经修改如下
@author:banxi1988
@date:2010-12-9
/
#include<stdioh>
#include<stdlibh>
#include<stringh>
#define M 5 /同学的人数 如果你想多输入些的话自己改吧 /
void input(char name[],int n);
void sort(char name[],int n);
int main(int argc, char agrv){
char name[M]; /保存学生的名字/
int i= 0;
input(name,M);
sort(name,M);
printf("名字按拼音排列输出如下:\n");
for(i=0;i<M;i++)
{
printf("%s\t",name[i]);
}//for:
printf("\n");
return 0;
}//
void input(char name[],int n){
char str[20]; /拼音的长度 20-1 ,自己改 /
int i;
printf("请输入 %d 个学生的名字(请用拼音) :\n",M);
/ 这里也比较关键,好好领会/
for(i=0; i < n; i++)
{
scanf("%s",str);
name[i] = (char )malloc(sizeof(char)(strlen(str)));
strcpy(name[i],str);
}//for:
}//input
void sort(char name[],int n){
/冒泡法实现排序/
char tmp;
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
{
/两个名字位置交换,将较大的名字放到数组的前面/
if(strcmp(name[j],name[j-1])<0)
{
tmp=name[j-1];
name[j-1]= name[j];
name[j]=tmp;
}
}//inner for
}//outer for
}//sort
/ 测试结果:
请输入 5 个学生的名字(请用拼音) :
abc cano java perl banxi
名字按拼音排列输出如下:
abc banxi cano java perl
/
在Word中按第一个字的首字母排列顺序的方法及步骤:
方法一:
1 打开你要排序的文件。也可以复制和粘贴列表到一个要整理的文件。要按字母顺序排列,条目需要被格式化为一个列表,每个条目在自己的行。
2 如果你想按字母顺序排列的列表是一个大文件的一部分,打亮要排序的部分。
3 点击“主页”选项卡。在“主页”选项卡的“段落”部分,单击“排序”按钮。图标是一个“A”上“Z”下的向下箭头。这 将打开“排序文字”对话框。
4 选择排列顺序。默认下,按段排序。单击“升序”或“降序”按钮选择排列顺序。递增把名单按字母顺序排列,递减按字母顺序反向排列。
注: 如果要按每个条目的第二个字排序(例如在名,姓格式中按姓排序) ,单击“排序文字”窗口中的“选项”按钮。在“独立领域”一节中,选择“其他” ,并输入一个空格。按“确定” ,然后在排序菜单中选择第2个字。按“确定”对列表进行排序。
方法二:
1 打开你要排序的文件。也可以复制和粘贴列表到一个要整理的文件。要按字母顺序排列,条目需要被格式化为一个列表,每个条目在自己的行。
2 如果你想按字母顺序排列的列表是一个大文件的一部分,打亮要排序的部分。
3 单击“表格”菜单。选择排序。这将打开“排序文字”对话框。
4 选择排列顺序。默认下,按段排序。单击“升序”或“降序”按钮选择排列顺序。递增把名单按字母顺序排列,递减按字母顺序反向排列。
注: 如果要按每个条目的第二个字排序(例如在名,姓格式中按姓排序) ,单击“排序文字”窗口中的“选项”按钮。在“独立领域”一节中,选择“其他” ,并输入一个空格。按“确定” ,然后在排序菜单中选择第2个字。按“确定”对列表进行排序。
以上就是关于jquery或javascipte实现标签内文字按拼音首字母排序全部的内容,包括:jquery或javascipte实现标签内文字按拼音首字母排序、请教在EXCEL中把人名的拼音首字母提取的方法、如何获得汉字拼音的首字母序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)