私はここにこの質問への答えを追加しました:自然なソート順を必要とするC#でのソートList<String>
、埋め込まれた数値を処理するもの。
しかし、私の実装は素朴であり、アプリケーションが物事を想定してUnicodeを正しく処理しない方法に関するすべての投稿の代わりに(トルコは誰かをテストしますか?)、より良い実装を書くための助けを求めたいと思いました。または、.NETの組み込みメソッドがある場合は、教えてください:)
その質問の答えの私の実装は、文字列を調べて、文字ごとに比較し、両方の数字に遭遇するまで続けます。次に、両方の文字列から連続する数字を抽出します。これにより、長さが変化する可能性があり、最短のものに先行ゼロを埋めてから、比較します。
ただし、問題があります。
たとえば、文字列xに2つのコードポイントがあり、それらが一緒になって文字Èを作成しているのに、もう1つの文字列には、その文字であるコードポイントが1つしかない場合はどうでしょうか。
私のアルゴリズムは、発音区別符号を1文字として扱い、他の文字列のÈと比較するため、これらのアルゴリズムでは失敗します。
誰かがこれを適切に処理する方法を教えてもらえますか?CultureInfo
ドイツの「ss」と「ß」の比較など、言語の問題を処理するオブジェクトを指定するためのサポートが必要です。
個々のコードポイントではなく、「実際の文字」(ここでは実際の用語はわかりません)を列挙するようにコードを取得する必要があると思います。
これに対する正しいアプローチは何ですか?
また、「自然」が「人間が期待する方法」を意味する場合、私は次のことを熟考するために追加します。
- 日時はどうですか?
- 浮動小数点値はどうですか?
- 「自然」と見なされる他のシーケンスはありますか?
- これをどこまで伸ばす必要がありますか?(Eeny、meeny、miny、moe)