我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.
例如,我想要:abc1def,...,abc9def,abc10def
而不是:abc10def,abc1def,...,abc9def
有谁知道这个算法(特别是在c ++中)
谢谢
我有一个目录列表,我想要检索文件名并将它们放在一个字符串向量中,以便它们以"自然"的方式排序.例如{ "10.txt" "0.txt" "2.txt" "1.m" "Jan12" "July13.txt" "Nov25.txt" "Jane" "John" }应该{"0.txt" "1.m" "2.txt" "10.txt" "Jan12" "July13.txt" "Nov25.txt" "Jane" "John" }.最简单的方法是什么?
在阐述"自然",我们假设从号码的部分组成的字符串(N)和文本(T)这样...(N)(T)...,那么对于...(N1)(T1)...和 ...(N2)(T2)...会(N1<N2) (<) (T1<T2),其中 (<)暗示了正确的长期左边项优先.在这种情况下,如果数字在字符串中处于相同位置,则数字优先于文本字段,即1.z (<) 1_t.txt.
是否已经有一个库函数来对字母数字字符串或目录条目进行那种排序?
期望的文件顺序.文件名将存储在字符串向量中.
Abhinav@Abhinav-PC /cygdrive/c/AbhinavSamples/shell
$ ls -lv
total 8
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:51 1.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:55 1_t.txt
-rw-r--r--+ 1 Abhinav None 2 …Run Code Online (Sandbox Code Playgroud)