相关疑难解决方法(0)

对可能包含数字的字符串进行排序

我需要编写一个Java Comparator类来比较Strings,但是有一个转折.如果它比较的两个字符串在字符串的开头和结尾是相同的,并且不同的中间部分是整数,则根据这些整数的数值进行比较.例如,我希望以下字符串以它们显示的顺序结束:

  • AAA
  • bbb 3 ccc
  • bbb 12 ccc
  • ccc 11
  • DDD
  • eee 3 ddd jpeg2000 eee
  • eee 12 ddd jpeg2000 eee

如您所见,字符串中可能还有其他整数,因此我不能只使用正则表达式来分解任何整数.我正在考虑从一开始就走绳子,直到找到一点不匹配,然后走到最后,直到找到一个不匹配的位,然后比较中间的位到正则表达式"[0-9] +",如果比较,则进行数值比较,否则进行词法比较.

有没有更好的办法?

更新我不认为我可以保证字符串中的其他数字,可能匹配的数字,周围没有空格,或者不同的数字确实有空格.

java sorting string algorithm comparison

73
推荐指数
6
解决办法
8万
查看次数

如何在c ++中实现自然排序算法?

我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.

例如,我想要:abc1def,...,abc9def,abc10def

而不是:abc10def,abc1def,...,abc9def

有谁知道这个算法(特别是在c ++中)

谢谢

c++ sorting natural-sort

17
推荐指数
3
解决办法
1万
查看次数

如何在Windows资源管理器中获取Delphi中的排序顺序?

综述:

  1. 我一直在寻找的术语似乎是"自然的排序".
  2. 对于操作系统中的行为:

    • 对于Windows(版本> = XP),Windows资源管理器使用自然排序.
    • 对于Linux终端:使用"ls -v"而不是普通的"ls"来获得自然排序.
  3. 对于Delphi中的编程,使用StrCmpLogicalW Windows API进行自然排序.

  4. 对于Delphi和Kylix&Lazarus中的编程,使用手工制作的函数进行自然排序:

==========================

将在Windows资源管理器中订购以下文件名,如下所示:

test_1_test.txt

test_2_test.txt

test_11_test.txt

test_12_test.txt

test_21_test.txt

test_22_test.txt

例如,如果我将它们放在TStringList实例中并调用Sort,则排序顺序如下:

test_1_test.txt

test_11_test.txt

test_12_test.txt

test_2_test.txt

test_21_test.txt

test_22_test.txt

为了记录,上述文件名将在Cygwin的rxvt终端或Linux发行版的xterm终端(如CentOS)中进行排序,如下所示:

test_11_test.txt

test_12_test.txt

test_1_test.txt

test_21_test.txt

test_22_test.txt

test_2_test.txt

您能否帮助评论如何理解排序行为的这种差异?此外,是否可以获得与Windows资源管理器中相同的顺序?任何建议表示赞赏!

PS:我的Windows语言环境设置为中文,但我认为英语语言环境也是如此.

windows delphi sorting collation

17
推荐指数
2
解决办法
3491
查看次数

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)

c c++ linux sorting directory

7
推荐指数
2
解决办法
6314
查看次数