一种复杂文字集排序的方法与流程

文档序号:32801337发布日期:2023-01-03 23:44阅读:20来源:国知局
一种复杂文字集排序的方法与流程

1.本发明涉及文字排序处理技术领域,具体涉及一种复杂文字集排序的方法。


背景技术:

2.在互联网行业中,文字排序在业务场景中是非常常见的,但是因为文字中可能包含中文、数字字符(大小写阿拉伯数字、中文大写数字、罗马数字)、字母(大小写)和其他字符(特殊符号、空格、表情等)的存在,导致通过自然排序拿到的结果并非预期输出,排序的场景只能应用在纯字母、纯数字和字母数字组合的单一场景。


技术实现要素:

3.本发明的目的在于提供一种复杂文字集排序的方法,以期解决背景技术中存在的技术问题。
4.为了实现上述目的,本发明采用以下技术方案:
5.一种复杂文字集排序的方法,包括以下步骤:
6.步骤1:记录目标文字的字符长度length;
7.步骤2:匹配文字中的连续文字,将其分为多个纯中文、纯字母、纯数字字符和其他字符组合的集合list;
8.步骤3:将list中的纯中文集合转为拼音小写字母;
9.步骤4:将list中的纯数字字符转为小写阿拉伯数字;
10.步骤5:将list中的其他字符转换为波浪号;
11.步骤6:将转化出来的文字集合进行对比,按照规则得到排序结果。
12.所述步骤6:将转化出来的文字集合进行对比,按照规则得到排序结果,包括:
13.步骤a:将至少a、b两组文字按照步骤1-5转化成两个集合alist、blist,记录文字长度alength、blength;其中,下标x、下标y是从n开始的整数,指向集合中对应的第n+1个内容;n为从0开始的正整数;
14.定义下标x为0,y为0;
15.步骤b:取出alist中下标x的内容ax与blist中下标x的内容bx对比;
16.步骤b1:将内容ax、内容bx转成单个字符的集合axlist、bxlist;
17.步骤b2:取出axlist中下标y的内容axy与bxlist中下标y的内容bxy对比;
18.步骤c:对比两个内容获得差值;
19.步骤c1:如果axy与bxy内容为纯数字组合时,差值=axy-bxy,进入步骤d;
20.步骤c2:若非步骤c1,则差值=axy的ascii-bxy的ascii,进入步骤d;
21.步骤d:判断差值的结果;
22.步骤d1:如果差值大于0,进入步骤f1;
23.步骤d2:如果差值小于0,进入步骤f2;
24.步骤d3:如果差值等于0,进入步骤e;
25.步骤e:下标y加1,判断下标y是否越界,即下标y的位置超出了集合的长度;
26.步骤e1:如果下标y等于axlist的长度且小于bylist的长度,进入步骤f2;
27.步骤e2:如果下标y小于axlist的长度且等于bylist的长度,进入步骤f1;
28.步骤e3:如果下标y等于axlist的长度且等于bylist的长度,进入步骤g;
29.步骤e4:如果下标y小于axlist的长度且小于bylist的长度,则进入步骤b2;
30.步骤f1:排序规则升序则ax在bx后面,排序规则降序则ax在bx前面,进入步骤e;步骤f2:排序规则升序则bx在ax后面,排序规则降序则bx在ax前面,进入步骤e;
31.步骤g:下标y修改为0,下标x加1,判断下标x是否越界,即下标x的位置超出了集合的长度;
32.步骤g1:如果下标x等于alist的长度且小于blist的长度,进入步骤f2;
33.步骤g2:如果下标x小于alist的长度且等于blist的长度,进入步骤f1;
34.步骤g3:如果下标x等于alist的长度且等于blist的长度,进入步骤h;
35.步骤g4:如果下标x小于alist的长度且小于blist的长度,则进入步骤b;
36.步骤h:对比原始文字的文字长度alength与blength数字大小;
37.步骤h1:如果alength大于blength,进入步骤f1;
38.步骤h2:如果alength小于blength,进入步骤f2;
39.步骤h3:如果alength等于blength,a与b完全一样,进入步骤i;
40.步骤i:输出相应的排序结果,完成排序功能。
41.本技术所提供的一种复杂文字集排序的方法具有的有益效果包括但不限于:
42.基本满足各类复杂文字组合的自然排序规则,有效解决数字、特殊符号的干扰导致排序结果未能按照预期输出的情况。
具体实施方式
43.为使本技术的目的、技术方案和优点更加清楚,对本技术实施例中的技术方案进行更加详细的描述。所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
44.对本技术实施例所涉及的一种复杂文字集排序的方法进行详细说明。值得注意的是,以下实施例,仅仅用于解释本技术,并不构成对本技术的限定。
45.缩略词和关键术语定义:
46.自然排序:比较对应字符的大小(ascii码顺序)
47.小写阿拉伯数字:1、2、3、4、5、6、7、8、9、0...
48.大写阿拉伯数字:一、二、三、四、五、六、七、八、九、十...
49.中文大写数字:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾...
50.罗马数字:ⅰ、ⅱ、ⅲ、ⅳ、

、ⅵ、ⅶ、



...
51.集合:软件编程语言中的一种数据结构(数据结构是计算机存储、组织数据的方式。)
52.实施例1:
53.一种复杂文字集排序的方法,包括以下内容:
54.步骤1:记录目标文字的字符长度length
55.步骤2:匹配文字中的连续文字,将其分为多个纯中文、纯字母、纯数字字符和其他字符组合的集合list。
56.步骤3:将list中的纯中文集合转为拼音(即小写字母)
57.步骤4:将list中的纯数字字符转为小写阿拉伯数字,即:
58.·
大写数字(一、二、三、四、五、六、七、八、九、十、百、千、万、亿)转为小写阿拉伯数字
59.·
中文数字(壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万(萬)、亿、元(圆)、角、分、零、整)转为小写阿拉伯数字
60.·
罗马数字(ⅰ、ⅱ、ⅲ、ⅳ、

、ⅵ、ⅶ、



)转为小写阿拉伯数字
61.步骤5:将list中的其他字符转换为波浪号(~ascii码中最大值)。
62.步骤6:将转化出来的文字集合进行对比,按照规则(升序、降序)得到排序结果。
63.步骤中的文字解释:
64.下标x、下标y是从0开始的整数,指向集合中对应的第几个内容。比如下标x等于0,x指向集合第1个内容;下标x等于3,指向集合第4个内容,以此类推
65.步骤a:将a、b两组文字按照(1-5的步骤)转化成两个集合alist、blist,记录文字长度alength、blength。定义下标x为0,y为0;
66.步骤b:取出alist中下标x的内容ax与blist中下标x的内容bx对比;
67.步骤b1:将内容ax、内容bx转成单个字符的集合axlist、bxlist;
68.步骤b2:取出axlist中下标y的内容axy与bxlist中下标y的内容bxy对比;
69.步骤c:对比两个内容获得差值;
70.步骤c1:如果axy与bxy内容为纯数字组合时,差值=axy-bxy,进入步骤d;
71.步骤c2:若非步骤c1,则差值=axy的ascii-bxy的ascii,进入步骤d;
72.步骤d:判断差值的结果
73.步骤d1:如果差值大于0,进入步骤f1;
74.步骤d2:如果差值小于0,进入步骤f2;
75.步骤d3:如果差值等于0,进入步骤e;
76.步骤e:下标y加1,判断下标y是否越界(下标y的位置超出了集合的长度)步骤e1:如果下标y等于axlist的长度且小于bylist的长度,进入步骤f2;
77.步骤e2:如果下标y小于axlist的长度且等于bylist的长度,进入步骤f1;
78.步骤e3:如果下标y等于axlist的长度且等于bylist的长度,进入步骤g;
79.步骤e4:如果下标y小于axlist的长度且小于bylist的长度,则进入步骤b2;
80.步骤f1:排序规则升序则ax在bx后面,排序规则降序则ax在bx前面,进入步骤e;
81.步骤f2:排序规则升序则bx在ax后面,排序规则降序则bx在ax前面,进入步骤e;
82.步骤g:下标y修改为0,下标x加1,判断下标x是否越界(下标x的位置超出了集合的长度)
83.步骤g1:如果下标x等于alist的长度且小于blist的长度,进入步骤f2;
84.步骤g2:如果下标x小于alist的长度且等于blist的长度,进入步骤f1;
85.步骤g3:如果下标x等于alist的长度且等于blist的长度,进入步骤h;
86.步骤g4:如果下标x小于alist的长度且小于blist的长度,则进入步骤b;
87.步骤h:对比原始文字的文字长度alength与blength数字大小;
88.步骤h1:如果alength大于blength,进入步骤f1;
89.步骤h2:如果alength小于blength,进入步骤f2;
90.步骤h3:如果alength等于blength,a与b完全一样,进入步骤i;
91.步骤i:输出相应的排序结果,完成排序功能。
92.具体的举例如下:(注:表中的斜体文字表示与上一步骤相比变化的地方):
93.对比文字“一街a1座1单元”与“一街a8座1单元”的按照降叙顺序:
94.步骤一:记录文字长度均为8个字符。
95.步骤二:拆分成多个组合,具体见表1;
96.表1
[0097]-街a1座1单元-街a8座1单元
[0098]
步骤3:纯中文拼音,具体见表2;
[0099]
表2
[0100]-jiea1zuo1danyuan-jiea8zuo1danyuan
[0101]
步骤4:纯数字字符传为小写阿拉伯数字,具体见表3;
[0102]
表3
[0103]
1jiea1zuo1danyuan1jiea8zuo1danyuan
[0104]
步骤5:此例中无其他字符省略
[0105]
步骤6:对比两个文字输出结果顺序
[0106]
下标x=0时:具体见表4;
[0107]
表4
[0108][0109]
下标y=0时:具体见表5;
[0110]
表5
[0111]
[0112]
对比结果为0表示内容相等!
[0113]
因下标x=0时,集合长度最大为1。则下标x=1、下标y=0:具体见表6;
[0114]
表6
[0115][0116]
对比结果为0表示内容相等!
[0117]
因下标x=1时,集合长度最大为3。则下标x=1、下标y=1:具体见表7;
[0118]
表7
[0119][0120]
对比结果为0表示内容相等!
[0121]
因下标x=1时,集合长度最大为3。则下标x=1、下标y=2:具体见表8;
[0122]
表8
[0123][0124]
对比结果为0表示内容相等!
[0125]
因下标x=1时,集合长度最大为3。则下标x=2、下标y=0:具体见表9;
[0126]
表9
[0127][0128]
对比结果为0表示内容相等!
[0129]
因下标x=2时,集合长度最大为1。则下标x=3、下标y=0:具体见表10;
[0130]
表10
[0131][0132]
对比结果大于0,排序按照降叙结果为:具体见表11;
[0133]
表11
[0134]-街a8座1单元-街a1座1单元
[0135]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1