精华内容
下载资源
问答
  • 怎么按照拼音排序
    2022-03-17 14:28:38

    mysql里面按照拼音进行排序
    ORDER BY CONVERT(name USING GBK)

     ORDER BY CONVERT(name USING GBK)
    
    更多相关内容
  • 今天在代码中用到了对中文按照拼音排序,咨询了群里面的大神后得到了下面的代码: var arr = ["张三","李四","王五","阿三"]; [removed](arr+" "); arr.sort(function(a,b){ return a.localeCompare(b); }); ...
  • 主要是对java中将汉字按照拼音排序的实现代码进行了详细的分析介绍。需要的朋友可以过来参考下,希望对大家有所帮助
  • JavaScript对文字按照拼音排序</title>[removed]function defaultSort(){var a=”zhongguo,daguo,世界,中国,超级大国”;a=a.split(“,”);a.sort();alert(a);}function cusSort(){var a=”zhongguo,...
  • layui 改写 table 排序,填加中文按照拼音排序-附件资源
  • 项目中遇到需要对list结果集属性按照中文拼音排序场景。代码如下:在controller中,获取到devParamList后做如下处理://获取商户list集合List> devParamList = xxxxService.queryList();//Collections工具类的...

    项目中遇到需要对list结果集属性按照中文拼音排序场景。

    代码如下:

    在controller中,获取到devParamList后做如下处理:

    //获取商户list集合

    List> devParamList = xxxxService.queryList();

    //Collections工具类的sort()方法对list集合元素排序

    devParamList.sort(o1, o2) -> {

    //获取中文环境

    Comparator com = Collator.getInstance(java.util.Locale.CHINA);

    return com.compare(o1.get("name"), o2.get("name"));

    }

    });

    9月28日更新

    经过测试发现上面的排序,对多音字排序不够友好, 比如校(jiao)验会按照校(xiao)验排序。

    查找资料发现,可以使用pinyin4j.jar, 是一个开源项目,可以直接当做工具类使用。

    使用如下:

    导入依赖

    com.belerweb

    pinyin4j

    2.5.0

    工具方法实现

    public void sortListByPinyin(List> mapList) {

    mapList.sort((o1, o2) -> {

    char name1 = String.valueOf(o1.get("name")).charAt(0);

    char name2 = String.valueOf(o2.get("name")).charAt(0);

    String s1 = concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(name1));

    String s2 = concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(name2));

    return s1.compareTo(s2);

    });

    }

    private String concatPinyinStringArray(String[] pinyinArr) {

    StringBuilder sb = new StringBuilder();

    if (pinyinArr != null && pinyinArr.length > 0) {

    for (String s : pinyinArr) {

    sb.append(s);

    }

    }

    return sb.toString();

    }

    展开全文
  • 开发中碰到个小需求:需要对省按拼音排序。其实全国的省个数并不多,实在不行人肉排序也OK,不过这样就太挫了。网上查了下,发现原生JDK自带的解决方法如下:package com.taobao.test;import java.text.Collator;...

    开发中碰到个小需求:需要对省按拼音排序。其实全国的省个数并不多,实在不行人肉排序也OK,不过这样就太挫了。

    网上查了下,发现原生JDK自带的解决方法如下:

    package com.taobao.test;

    import java.text.Collator;

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.Comparator;

    import java.util.Iterator;

    import java.util.Map;

    public class TestSortChinese {

    public static void main(String[] args){

    Iterator it = SortChinese.provinceMap.entrySet().iterator();//这里的map里数据是全国所有的省中文String

    ArrayList al = new ArrayList();

    while(it.hasNext()){

    al.add((String)((Map.Entry)(it.next())).getValue());

    }

    Object[] arr = al.toArray();

    Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);

    Arrays.sort(arr, cmp);

    for(Object s : arr){

    System.out.println(s);

    }

    }

    }

    打印出来的结果还行,除了重庆因为多音字的原因,被当成了zhong庆排在了末尾,其它的都对了。对于这个特殊情况就单独处理下好了。

    这个JDK自带的方法这么好用吗?查证了下发现是有缺陷的,其只能对于GB2312里的中文字符进行正确排序,通俗点说就是只能对常用字好用。但是这个常用字的定义也不能让人很满意,只支持6000多个常用字,这是远远不够的。GBK是GB2312的超集,里面包含了20000多个中文字符(基本就包括所有中文字符了),但是不包含在GB2312里的字符都无法正确排序了。

    网上普遍的解决方案是用到一个开源项目:http://pinyin4j.sourceforge.net/。具体可见下面这四篇文章,里面叙述的都比较详细了:

    http://www.blogjava.net/spinage/archive/2009/10/15/298403.html

    http://hi.baidu.com/chssheng2007/item/1bf3a6dedea5eff492a974fb

    http://blog.csdn.net/kennylee26/article/details/3926168

    http://blog.csdn.net/machozhao/article/details/1047333

    由于此次只用到了点皮毛,所以没有深入的去钻研,但正如参考文章里写到的,实现的原理就是把汉字转化为拼音,然后再进行的排序。有兴趣的读者可以深挖下怎么把汉字转化为拼音。我看到有文章介绍说可以用到系统里的字库的,但未进行实践尝试,暂先不过多叙述了。

    展开全文
  • java 汉字按照拼音排序

    千次阅读 2021-03-15 11:45:47
    数据库中按照拼音排序很简单 SELECT DISTINCT province_name, province_code FROM `metadata_township` ORDER BY convert(province_name USING gbk) asc 一般的排序都是能正确的,但是有的多音字啥的会有点差别,...

    数据库中按照拼音排序很简单

    SELECT DISTINCT province_name, province_code FROM `metadata_township` ORDER BY convert(province_name USING gbk) asc

    一般的排序都是能正确的,但是有的多音字啥的会有点差别,例如重庆,按理说是重是“chong”,但是排序的时候会按照“zhong”,就会排在靠后的。

    Java中按照拼音排序

    我的list里面是对象,对象里面含有需要按照拼音排序的字段name,我用的lambda表达式来简化代码。

    /**
     *(o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName()) 排序规则,根据汉字的拼音来排序(升序)
     * list 是需要排序的集合
    */
    Collections.sort(list,(o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName()));

    根据这个得到的排序大部分都是正确的,跟前面sql里面排序的结果差不多,多音字,生僻字会不准确。

    展开全文
  • Java 按照拼音排序方法 static class ComparatorPinYin implements Comparator<SysUserForPad>{ @Override public int compare(SysUserForPad o1, SysUserForPad o2) { return ToPinYinString(o1.getUserName())....
  • 一般而言,中文我们是按照拼音进行排序,例如Windows系统中的文件“按照名称排序”就是这个原理。按理说“阿”应该在“波”之前,而compareTo却给出了相反的结果 因此我们对中文排序时需要先将其转换为拼音,这里...
  • 全国城市以及区号(按照拼音排序
  • @Data static class Demo{ private String name; public Demo(String s) { this.name=s; } } public static int sortByPinYin(String o1, String o2) { List<String> list = Arrays.asList(o1, ... ...
  • dataframe按照拼音排序

    2021-04-01 11:15:54
    dataframe对某列按照拼音的顺序进行排序 代码 import pandas as pd from pypinyin import lazy_pinyin a_dict = { "index": [1, 2, 3, 4], "name": ['张三', '李四', '王五', '王六'] } a_df = pd.DataFrame(a_...
  • 汉字按照拼音排序

    2019-09-09 19:27:10
    ``` # -*- coding: utf-8 -*- import os import codecs import math import operator import re from xpinyin import Pinyin pin = Pinyin() patent_file = "in.txt" ...f = open(patent_file, 'r', enc...
  • 拼音排序:var resultArray = arr.sort( //数组按照abcd排列 function compareFunction(param1, param2) { return param1.localeCompare(param2,"zh"); } );将数组按照拼音排序(多...
  • localeCompare() 方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。 二、实现步骤 //原始数据 var a = ['欧阳鹏','欧阳鹏b','欧阳鹏a', '赵芳', '陈诚', 'a', 'b', '1', '2', '12'...
  • 最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较。@Testpublic voidtest_sort_pinyin() {Collator cmp=Collator.getInstance(java.util.Locale.CHINA);String[] arr= { "张三", "李四", ...
  • 项目中有时候会遇到需要按照汉字拼音排序的需求,比如即时通讯的用户名称 实现 环境一 如果要排序的字段编码使用的是GBK字符集,那就可以直接按照拼音排序。因为GBK内码编码时本身就采用了拼音排序的方法(常用一级...
  • 一般情况下,大家会使用下面的方法来进行汉字的拼音排序 代码如下: var list = [ ‘王’, ‘张’,’李’]; list.sort(function (a, b) { return a.localeCompare(b); }); localeCompare() :用本地特定的顺序来比较...
  • Oracle SQL 按照拼音、部首、笔画排序功能
  • Java中字符编码是Unicode,在给汉字字符串排序时,并不是我们期望的按照汉语拼音排序。例如,语句System.out.println('龙'>'最')的结果是true,尽管'l'下载后将其中的pinyin4j-2.5.0.jar加到我们工程的Build ...
  • Java汉字按照拼音排序

    2021-03-17 17:40:01
    最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较。@Test public void test_sort_pinyin() { Collator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = { “张三”, ...
  • 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字...以上这篇MySQL按照汉字的拼音排序简单实例就是小编分享给大家的全部内
  • java集合某个字段按照中文拼音排序 java集合某个字段按照中文拼音排序
  • 将省份按照拼音进行排序 objKeySort(obj) { //排序的函数 let newkey = Object.keys(obj).sort((a, b) => { return a.localeCompare(b, 'zh'); }); //先用Object内置类的keys方法获取要排序对象的属性名,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,733
精华内容 13,093
热门标签
关键字:

怎么按照拼音排序