gpt4 book ai didi

java - 在 Java 中检查字符串是否是 ISO 语言的 ISO 国家/地区的更简洁方法

转载 作者:搜寻专家 更新时间:2023-10-30 21:03:50 28 4
gpt4 key购买 nike

假设有一个两个字符的String,它应该代表ISO 639国家或语言名称。

你知道,Locale类有两个函数 getISOLanguagesgetISOCountries分别返回包含所有 ISO 语言和 ISO 国家/地区的 String 数组。

要检查特定的 String 对象是否是有效的 ISO 语言或 ISO 国家/地区,我应该在该数组中查找匹配的 String。好的,我可以使用二进制搜索(例如 Arrays.binarySearch 或 ApacheCommons ArrayUtils.contains )来做到这一点。

问题是:存在任何实用程序(例如来自 GuavaApache Commons 库)提供更简洁的方式,例如返回 boolean 以将 String 验证为有效的 ISO 639 语言或 ISO 639 国家/地区的函数?

例如:

public static boolean isValidISOLanguage(String s)
public static boolean isValidISOCountry(String s)

最佳答案

我不会费心使用二进制搜索或任何第三方库 - HashSet 就可以了:

public final class IsoUtil {
private static final Set<String> ISO_LANGUAGES = Set.of(Locale.getISOLanguages());
private static final Set<String> ISO_COUNTRIES = Set.of(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);
}
}

可以先检查字符串长度,但我不确定我是否会费心 - 至少不会,除非您想保护自己免受性能攻击,因为您被赋予了巨大的字符串需要很长时间才能散列。

编辑:如果您确实想使用第三方库,ICU4J是最有可能的竞争者 - 但它可能有一个比 Locale 支持的列表更新的列表,因此您可能希望在任何地方都使用 ICU4J。

关于java - 在 Java 中检查字符串是否是 ISO 语言的 ISO 国家/地区的更简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15921332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com