需求

对ui显示的表格进行排序,需支持中文字母排序,但是sqlite数据库不支持中文的拼音和笔画排序,这样就会导致排序中文显示顺序无规律。这个时候,就需要自己写一个排序功能,且排序支持中文拼音排序。

示例

有一个字符串链表,有n个字符串,需要对这些字符串进行排序(支持中文拼音排序)。
代码定义如下:

QStringList list;list<< "1中中句"<< "方法"<< "2中句中"<< "种"<< "句外"<< "中中"<< "句章 "<< "a强蛟厂"<< "b甜甜"<< "章章"<< "1方法"<< "rgerag"<< "efw"<< "eed"<< "easw"<< "我的杀杀杀 "<< "跳跳框框"<< "条条奔奔"<< "希望小学"<< "小桃"<< "小涛"<< "张麻子"<< "张强"<< "小李飞刀"<< "小李他娘"<< "12五"<< "874ff的"<< "哈哈哈,很强";

排序方法

比较函数:

//比较策略
bool LessThan(const QString &s1, const QString &s2)
{return (s1.localeAwareCompare(s2) < 0);
}

标准库中排序函数sort的使用:

std::sort(sList.begin(), sList.end(), LessThan); //迭代器 + 函数指针

现象

由于代码比较简单,这里就不做demo了,展示排序结果:

排序结果为:

(“12五”, “1方法”, “1中中句”, “2中句中”, “874ff的”, “a强蛟厂”, “b甜甜”, “easw”, “eed”, “efw”, “rgerag”, “方法”, “哈哈哈,很强”, “句外”, "句章 ", “条条奔奔”, “跳跳框框”, "我的杀杀杀 ", “希望小学”, “小李飞刀”, “小李他娘”, “小涛”, “小桃”, “张麻子”, “张强”, “章章”, “中中”, “种”)

显然排序顺序依次为英文符号、数字、字母、中文符号、中文(拼音)。

如果需要倒序,则将比较函数修改即可:

//比较策略
bool LessThan(const QString &s1, const QString &s2)
{return (s1.localeAwareCompare(s2) > 0);
}

又或者使用rbegin、rend函数进行倒序排序,这样的操作没有试过。

中英文数字字符串排序(标准库)相关推荐

  1. c++Numerical string sort数字字符串排序的实现算法(附完整源码)

    C++Numerical string sort数字字符串排序的实现算法 C++Numerical string sort数字字符串排序的实现算法完整源码(定义,实现,main函数测试) C++Num ...

  2. mysqlorderby数字字符串排序_Python中的元组排序和深度比较

    比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...

  3. Java之数字字符串排序

    A:案例:我有如下一个字符串:"91 27 46 38 50",请写代码实现最终输出结果是:"27 38 46 50 91" 分析: 1,将字符串切割成字符串数 ...

  4. python数字字符串排序_Python-数字字符串排序

    一.前言 列表排序基础:https://www.jianshu.com/p/44d4924744cb 列表的字符串包含数字,直接使用sorted()排序,得到的结果往往不如人意,如下: your_li ...

  5. 利用TreeSet给纯数字字符串排序

    import java.util.Iterator; import java.util.TreeSet; /* * 给字符串中的数字排序 * String str = "10,2,11,1, ...

  6. 字符串和字符串标准库

    1.简介编码方式 计算机的视角,世间万物不过是一串又一串的二进制字节流,以人类认识的字符为例,每一个字符串就必须有与之对应一个二进制码,这就叫做编码.然而在发明计算机时,发明者们只考虑到计算机处理的是 ...

  7. STL标准库及泛型编程

    1-认识headers.版本.重要资源 C++ Standard Library Standard Template Library 标准库 > STL 标准库以header files形式呈现 ...

  8. 转 Lua标准库: table函数, 数学函数, 字符串函数/格式化/配对, WoW新增函数, 函数别名...

    这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow. ...

  9. C++primer 第 3 章 字符串、向量和数组 3 . 3 标准库类型vector

    标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector"容纳着"其他对象,所以它也常被称作容器( ...

最新文章

  1. mysql 切表_mysql--------命令来操作表
  2. oracle定时器定时删除30天前的数据_Redis-数据淘汰策略持久化方式(RDB/AOF)Redis与Memcached区别...
  3. 马斯克:人脑“带宽”有限,需要用人工智能加持提高连接速度
  4. IIS 8.5配置.net网站[花了半个多小时]
  5. 升级到BigSur无法使用git和brew解决办法
  6. 电子计算机制作探测,如何自己制作一个简易的金属探测器
  7. 本地连不上远程mysql数据库(2)
  8. 将python源文件打包成exe文件
  9. Cookie、Session、Token、JWT分别是什么(一)
  10. C++ 语法概括总结
  11. vue使用a标签下载文件
  12. 数据清洗挑战Day1 | 手把手教你处理数据集中的缺失值
  13. HTML5个人学习笔记(一)
  14. PCB生产中的化学量监测--第四章翻译4.2.1
  15. 第二章 马尔可夫决策过程及表格型方法
  16. 计算机修改wif教程,电脑修改wifi密码步骤
  17. excel使用正则表达式
  18. ReentrantLock源码走读分析
  19. mysql my.cnf 不生效_MySQL修改my.cnf配置不生效的解决方法
  20. 苹果电脑拷贝文件到u盘很慢_ChronoSync v4.9.1 一款文件资料数据云同步备份工具...

热门文章

  1. 计算机软件知识产权权属,计算机软件著作权怎么确定归属
  2. 显示器切换服务器用什么键,电脑显示器切换器购买要注意什么 哪款电脑切换器好用...
  3. Mockito 入门
  4. 【性能优化方法论系列】三、性能优化的核心思想(1)
  5. 华为鸿蒙系统支持什么手机_华为鸿蒙os2.0系统支持手机 华为鸿蒙os2.0系统支持哪些型号升级...
  6. Android 深入实现基于socket套接字的即时聊天
  7. ROS学习笔记-roslaunch文件的编写用sh脚本控制launch文件启动顺序
  8. html水调歌头实验总结,水调歌头明月几时有反思总结
  9. 关于安卓开发计步器在安卓10.0版本无法显示步数问题
  10. 华为手机保留数据解锁密码手机保资料解锁原理华为解锁屏密码不删资料华为手机怎么保留数据解锁