[解決済み] 数字を含む文字列のソート
2023-05-17 10:29:18
質問
文字列を比較するJavaのComparatorクラスを書く必要がありますが、1つ工夫があります。 比較する2つの文字列が、文字列の最初と最後が同じで、異なる中間部分が整数である場合、それらの整数の数値に基づいて比較します。 例えば、以下のような文字列を表示順に終了させたい。
- aaa
- bbb 3 ccc
- bbb 12 ccc
- ccc 11
- ddd
- eee 3 ddd jpeg2000 eee
- EEE 12 DDD Jpeg2000 EEE
見ての通り、文字列の中には他の整数があるかもしれないので、正規表現を使って任意の整数を除外するわけにはいきません。 文字列の先頭からマッチしないビットを見つけるまで歩き、次に末尾からマッチしないビットを見つけるまで歩き、途中のビットを正規表現 "[0-9]+" と比較し、比較できたら数値比較、それ以外は語彙比較にしようと考えているのです。
もっと良い方法はないでしょうか?
アップデート 文字列中の他の数字、つまり一致する可能性のある数字の周りにスペースがないこと、あるいは異なる数字にスペースがあることを保証することはできないと思うのですが、どうでしょうか?
どのように解決するのですか?
ウェブサイトより
"人は、ソフトウェアとは異なる方法で数字を含む文字列をソートします。ほとんどのソート アルゴリズムは ASCII 値を比較しますが、これは人間の論理と矛盾する順序を生成します。それを修正する方法を紹介します。"
編集:以下は Javaコンパレータの実装 へのリンクです。
関連
-
アクセス制限の解決方法: ---- in Java
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Java基礎編 - オブジェクト指向
-
コンストラクタDate()が未定義である問題
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
Java の double データ型における 0.0 と -0.0 の問題
-
switch case文のcaseの後の列挙定数は列挙型なし