Java Collat​​or 的数字比较选项

Ali*_*yar 7 java string numbers numeric collator

问题:

假设我们有以下字符串列表{"Test1.txt", "Test2.txt", "Test11.txt", "Test22.txt"},使用String::compareToor对它们Collator::compare进行排序将产生以下顺序:

Test1.txt
Test2.txt
Test22.txt
Test3.txt
Run Code Online (Sandbox Code Playgroud)

这很不方便(可以说),而更人性化的结果是:

Test1.txt
Test2.txt
Test3.txt
Test22.txt
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我们可以编写自己的数字敏感的比较方法。但是,如果我们想要数字敏感排序以及使用现有实现Collator(或避免实现)进行国际化的好处,该怎么办?

有没有正确的方法来处理这个问题?或者也许有一个可靠的库可以解决这个问题?

其他语言:

在 Javascript 世界中,Intl.Collator的构造函数接受 a CollatorOption,它允许您设置配置来实现此类功能及更多功能:

const usCollator = Intl.Collator("us", { numeric: true });
const list = ["Test1.txt", "Test2.txt", "Test3.txt", "Test22.txt"];
list.sort(usCollator.compare);
console.log(list);
Run Code Online (Sandbox Code Playgroud)

Mik*_*Hay 2

您可以使用alphanumeric-comparator,它在Maven中可用。