私のアプリには外部プロセスからの文字列が入力されています。各文字列は2文字または5文字の長さで、java.util.Locale
を表します。たとえば、次のように文字列からJavaロケールを検証してインスタンス化する方法は?
EN-US
KO
最初の例は、 "en" がISO言語コードで、 "私たちは、" ISOの国である5-char型の文字列ですコード。これは "en_US"ロケールに対応する必要があります。 2番目の例は2文字の文字列で、 "ko"はISO言語コードで、 "ko_KR"(韓国語)ロケールに対応する必要があります。
これらの文字列(2文字または5文字のバラエティ)を取得し、それを(サポートされているJavaのロケールとして)検証してから、Localeインスタンスを作成します。
私はロケールは、箱から出して、このような検証に付属していることを期待しているだろうが、残念ながらこのコードは、例外がスローされずに実行されます。
Locale loc = new Locale("waawaaweewah", "greatsuccess");
// Prints: "waawaaweewah"
System.out.println(loc.getDisplayLanguage());
だから私は尋ねる、私にこれらの文字列がなる2つの形態を与えられました
- 文字列(両方の形式)を検証し、存在しないJava 6ロケールに対応する文字列の例外をスローします。および
- 文字列から新しいロケールをインスタンス化しますか?この質問は本当に
おかげで、事前になど、私は唯一の「KO」を持っており、それは「語ko_KR」ロケールにマッピングする必要があるかもしれません、2文字の形に適用されます!
ハイフンで入力を分割し、2文字のトークンを言語として扱うと仮定すると、2番目のケースでは '新しいロケール(言語)'を、最初のケースでは '新しいロケール(言語、国)'をどうでしょうか?そして国? – asgs