文字列をjavaの内容でソートするネイティブな方法はありますか?例えば。Javaで単一の文字列を並べ替える
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
はEDIT:tacklineが指摘するように、文字列は、サロゲートペアまたは実際の複合文字(アクセント+ Eなどが含まれている場合、これは失敗するStringコンストラクタの呼び出しに続いてArrays.sort
続い
String s = "edcba" -> "abcde"
正しい方法はコードポイントをソートすることです。残念ながら、String.toCodePointArrayはありません。 (どのような順序でソートする必要がありますか?btw?) –
ICUプロジェクトでは、コードポイント順UTF-16ソート方法について説明しています。http://icu-project.org/docs/papers/utf16_code_point_order.html私はArrays.sortが範囲が定義されている方法のために補助文字を破壊するとは思わないが、私には引用しない。 – McDowell
これはおそらく何も破壊しませんが、大文字とアクセントなどを考慮したい場合はソート順が最適ではありません。このアルゴリズムは "éDedCBcbAàa"を "ABCDabcdeà"と分類しますが、英語(US)ロケールでは "aAàbBcCdDeé"を取得する方が望ましいでしょう。 – eljenso