1. ホーム
  2. java

Javaで自然なソート順の文字列比較 - 一つは内蔵されていますか?[重複している]。

2023-11-22 09:49:03

質問

自然なソート順を維持する文字列比較関数がほしい 1 . このようなものがJavaに組み込まれているのでしょうか? 私は 文字列クラス で、そして Comparator クラス は2つの実装しか知りません。

自分でロールバックすることはできますが(それほど難しい問題ではありません)、必要なければ車輪を再発明することは避けたいと思います。

私の特定のケースでは、並べ替えたいソフトウェアのバージョン文字列があります。 そこで、私は "1.2.10.5" が "1.2.9.1" よりも大きいと見なされるようにしたいのです。


1 自然なソート順というのは、プログラマにしか意味のないアスキーベーシックなソート順とは異なり、人間が比較するような方法で文字列を比較することを意味します。 言い換えれば、"image9.jpg" は "image10.jpg" よりも少なく、"album1set2page9photo1.jpg" は "album1set2page10photo5.jpg" より少なく、そして "1.2.9.1" は "1.2.10.5" よりも少なくなる、ということです。

どのように解決するのですか?

java では "natural" order の意味は "lexicographical" order ですので、お探しのような実装はコアにはありません。

オープンソースの実装はあります。

これがその一つです。

NaturalOrderComparator.java

を必ず読んでください。

Cougaarオープンソースライセンス

お役に立てれば幸いです。