按自然语言规则进行字符串排序

QString 新提供了一个 NaturalCompareW 函数(兼容Delphi/C++ Builder 2007+)为大家提供按自然语言规则进行比较大小,也就是所谓的自然排序。所谓的自然排序是指像字母后面跟数字的情况下,不是按照字符本身的顺序,而是按照数字的值的顺序进行排序。如:A2 A10 A1 这三个字符串,按一般的计算机内部排序算法是 A1 A10 A2,而按自然排序的话,顺序应为:A1 A2 A10。

我们先看一下这个函数的声明:

参数说明在上面的声明中已经描述的比较清楚了,我们在其中处理了全角字符的情况,在中文自然排序规则中,我们认为全角和半角对应的同一个字符。

下面是一段示例代码,对 Memo1 中用户输入 的内容进行自然语言排序,然后输出到 Memo2 中。

实际运行效果如下图所示:

1、区分大小写:

NaturalCompare1

2、忽略大小写

NaturalCompare2

本演示程序下载:

百度网盘

分享到:

6 条评论

沙发空缺中,还不快抢~