字母和数字的排序

作者:苏建勇Nick 写作时间:2018-09-05

现在要做的排序是,输入一个只有数字或字母的字符串,字母数字之间用逗号和一个空格隔开,最后用小数点结束,数字按小到大排序,字母就按A到Z的顺序排。如果输入的字符串第一个是数字,你排好序输出的第一个也要是数字,就是说数字和字母的位置不变,但是排序就变了。举个例子:

输入:6, 3, desc, 7, ai.

输出:3, 6, ai, 7, desc.

代码实现:

img

先将字符串转为数组,for循环拿出字母和数字,同时记录下字母数字的位置就是下标数。第442行还做了一个处理,就是字母大小写排序的问题,因为大写和小写排序不一样,所以要用正则表达式检验一下字母字符串的第一个字母是不是大写,是大写就把第一个字母转为小写拼接字符串,再加个区分的标识"+"。

img

第459行和第477行就分别处理字母和数字,sort排好序,然后foreach遍历字母和数字的数组,利用之前记录下的位置重新赋值给$arr数组,打印一下就是:

img

已经排好序,最后我懒就不拼接回字符串了。