一、自然排序
在一些系统开发过程中,常常需要将一组词语数据进行安装自然排序,按照数字、中文拼音字母、英文词语字母等顺序排序。
二、Java实现
package com.learn.tang;
import java.text.Collator;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* 自然排序工具类
*/
public class Test005 {
public static void main(String[] args) {
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
String[] newArray = { "张三", "李四", "王五", "a1", "a21", "b2", "12", "10" };
List<String> list = Arrays.asList(newArray);
Collections.sort(list, com);
for (String i : list) {
System.out.println(i);
}
}
}
三、PHP实现
<?php
/**
* 自然排序工具类
*/
function nature_sorted($list) {
/**
* 回调:比较函数
*/
function mycmp($a, $b) {
$collator = new Collator("zh-CN");
return $collator->compare($a, $b);
}
$db = new SQLite3(":memory:");
$db->exec("CREATE TABLE test (col1 string)");
foreach ($list as $one) {
$db->exec("INSERT INTO test VALUES ('{$one}')");
}
$db->createCollation('NATURAL_CMP', 'mycmp');
$naturalSort = $db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP");
$ret = array();
while ($row = $naturalSort->fetchArray()) {
$ret[] = $row['col1'];
}
$db->close();
return $ret;
}
main($argc, $argv);
function main($argc, $argv) {
$l = array("张三", "李四", "王五", "a1", "a21", "b2", "12", "10");
echo "原始排序:\n";
foreach ($l as $i) {
echo $i . "\n";
}
echo "自然排序:\n";
$r = nature_sorted($l);
foreach ($r as $i) {
echo $i . "\n";
}
}
三、python实现
参考文章:https://xercis.blog.csdn.net/article/details/105380586
四、MySQL实现
如果MySQL编码格式为GBK字符集,可直接在查询语句后面添加
order by name asc; --进行升序排序 如果是utf8字符集,需要在排序的时候对字段进行转码,
order by convert(name using gbk) asc;本文标题:自然排序方法的实现(PHP+JAVA+Python+MySQL)
本文链接:https://blog.quwenai.cn/post/8402.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...