mat*_*boy 12 java validation iso apache-commons guava
假设有两个字符String,应代表ISO 639国家或语言名称.
你知道,Localeclass有两个函数getISOLanguages,getISOCountries它们分别返回一个String包含所有ISO语言和ISO国家的数组.
要检查特定String对象是否是有效的ISO语言或ISO国家/地区,我应该查看该数组中的匹配项String.好的,我可以通过使用二进制搜索(例如Arrays.binarySearch,ApacheCommons ArrayUtils.contains)来做到这一点.
问题是:存在任何提供更清洁方式的实用程序(例如来自Guava或Apache Commons库),例如返回a boolean以验证String作为有效ISO 639语言或ISO 639国家/地区的函数?
例如:
public static boolean isValidISOLanguage(String s)
public static boolean isValidISOCountry(String s)
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 20
我不打算使用二进制搜索或任何第三方库 - 这样HashSet做很好:
public final class IsoUtil {
private static final Set<String> ISO_LANGUAGES = new HashSet<String>
(Arrays.asList(Locale.getISOLanguages()));
private static final Set<String> ISO_COUNTRIES = new HashSet<String>
(Arrays.asList(Locale.getISOCountries()));
private IsoUtil() {}
public static boolean isValidISOLanguage(String s) {
return ISO_LANGUAGES.contains(s);
}
public static boolean isValidISOCountry(String s) {
return ISO_COUNTRIES.contains(s);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以先检查字符串长度,但我不确定我是否会打扰 - 至少除非你想要保护自己免受性能攻击的影响,否则会给你带来很长时间的大量字符串.
编辑:如果你不希望使用第三方库,ICU4J是最有可能的竞争者-但可能有更先进的最新列表比支持的人Locale,所以你会想要移动到任何地方使用ICU4J,大概.
| 归档时间: |
|
| 查看次数: |
9613 次 |
| 最近记录: |