如何从字符串验证和实例化Java Locale?

IAm*_*aja 7 java validation locale

我的应用程序正在从外部进程中提供字符串,其中每个字符串的长度为2或5个字符,并表示java.util.Locales.例如:

EN-US

KO

第一个示例是一个5字符串,其中"en"是ISO语言代码,"us"是ISO国家/地区代码.这应该对应于"en_US"区域设置.第二个示例只是一个2-char字符串,其中"ko"是ISO语言代码,应该对应于"ko_KR"(韩语)语言环境.

我需要一种方法来获取这些字符串(2或5-char种类),验证它(作为受支持的Java 6 Locale),然后使用它创建Locale实例.

我本以为Locale带来了开箱即用的验证,但不幸的是这段代码运行时没有抛出异常:

Locale loc = new Locale("waawaaweewah", "greatsuccess");

// Prints: "waawaaweewah"
System.out.println(loc.getDisplayLanguage());
Run Code Online (Sandbox Code Playgroud)

所以我问,给我这些字符串将给我的2个表格,我怎么能:

  • 验证字符串(两种形式)并为与不存在或不支持的Java 6语言环境对应的字符串抛出异常; 和
  • 从字符串中实例化一个新的Locale?这个问题真的适用于2-char形式,我可能只有"ko"并需要它映射到"ko_KR"Locale等.

提前致谢!

vis*_*ath 7

Locale.getISOCountries()Locale.getISOLanguages()

返回分别在ISO 3166和ISO 639中定义的所有双字母国家/地区和语言代码的列表,可用于创建区域设置.

您可以使用它来验证您的输入.