私は、Javaで単語を大文字にすることに関する膨大な質問にすべてのStackOverflowを見てきましたが、それらのどれも国際化についてはほとんど気にしていないようです。国際的な状況で働くこと。だから私の質問です。JavaのUnicode正しいタイトルケース
私は単語を表すJavaのStringを持っています。すべてのisLetter()文字は空白ではありません。私は最初の文字を大文字にし、残りは小文字にしたい。私は便利な言葉のロケールを持っています。
文字列の最後の部分について.substring(1).toLowerCase(Locale)を呼び出すだけで十分です。 正しい最初の文字を取得する方法はわかりません。
私が持っている最初の問題はオランダ語です。ここで、 "ij"は有向グラフであり、一緒に大文字にする必要があります。私はそれを知っているので、私は手でこれを特別に扱うことができた。今私が知らないこの種のものには他の言語があるかもしれません。私がうまく言えばUnicodeが教えてくれると確信しています。しかし、私は尋ねる方法を知らない。
Characterがタイトルケースをサポートしていてロケールをサポートしていないため、Stringはロケールをサポートしていますが、タイトルケースはサポートしていないため、上記の問題が解決されても、私はまだ英語、トルコ語、
コードポイントを取得してCharacter.toTitleCase()に渡すと、このメソッドにロケールを渡す方法がないため、これは失敗します。システムロケールが英語で、単語がトルコ語で、単語の最初の文字が「i」の場合、「İ」ではなく「I」を取得しますが、これは間違っています。 サブ文字列をとり、.toUpperCase(Locale)を使用すると、タイトルケースではなく上部文字なので失敗します。だから、もしその言葉がギリシャ語であれば、私はまだ間違った性格を持つでしょう。
誰かが役に立つポインタを持っていれば、私はそれらを聞いて嬉しいです。
'toTitleCase()はロケールに依存しないため、ロケールは必要ありません。 --- 2つの文字 'ij'を有向グラフにするには、有向グラフのUnicode文字'ij'(['LATIN SMALL LIGATURE IJ'(U + 0133))]に変換する必要があります(http:// www。 fileformat.info/info/unicode/char/0133/index.htm))。 – Andreas