jquery或javascipte实现标签内文字按拼音首字母排序

jquery或javascipte实现标签内文字按拼音首字母排序,第1张

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;//输出

方法:

1、利用在线汉字拼音应用将需要转换的汉字生成拼音;

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中把人名的拼音首字母提取的方法、如何获得汉字拼音的首字母序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9455841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存