传递的字符串是否在另一个字符串中的任何位置?JAVA
所以,我有一个问题,那似乎是一件非常简单的事情,我现在无法集中注意力 我试图确定传递给某个方法的字符串是否是有效的时区缩写(PDT、EST等)我有一个字符串,它列出了我应该使用的大约100个缩写,每个缩写之间只有一个空格,我希望能够检查传递的缩写是否在我列出的长字符串中的任何位置,如果不是,则返回错误消息传递的字符串是否在另一个字符串中的任何位置?JAVA,java,string,search,Java,String,Search,所以,我有一个问题,那似乎是一件非常简单的事情,我现在无法集中注意力 我试图确定传递给某个方法的字符串是否是有效的时区缩写(PDT、EST等)我有一个字符串,它列出了我应该使用的大约100个缩写,每个缩写之间只有一个空格,我希望能够检查传递的缩写是否在我列出的长字符串中的任何位置,如果不是,则返回错误消息 有人知道如何搜索长字符串吗?或者我应该首先不使用字符串吗?提前感谢你们能给我的任何帮助 首先不应该使用字符串 String ALL_ABRBREVIATIONS = ...; // all p
有人知道如何搜索长字符串吗?或者我应该首先不使用字符串吗?提前感谢你们能给我的任何帮助 首先不应该使用字符串
String ALL_ABRBREVIATIONS = ...; // all possible
public boolean isValid(String toCheck) {
return ALL_ABRBREVIATIONS.contains(toCheck);
}
将所有可能性添加到静态中,然后使用输入字符串调用contains()
更好的是,它可以为您验证时区,或者通过检查时区字符串来消除您试图解决的问题。您可以在长字符串上使用
包含的方法。或者,您可以使用数组而不是长字符串,如果添加更多的缩写,则长字符串可能更易于维护
对于缩写数组,请使用ArrayUtils.contains
(它是Apache Commons的一部分,不是标准库)。我不会使用字符串
如果您的时区字符串类似于:
String TIMEZONES = "PDT EST CET ..."
然后,您可以使用下一个代码转换为集
:
Set<String> VALID_TZS = new HashSet<>(Arrays.asList(TIMEZONES.split(" ")));
API中有一些简单的字符串方法(例如contains()
)。你试过谷歌吗?例如,“java validate timestamp”:-1表示不查看java文档。您可以在字符串中使用contains
,但字符串中的列表必须在前/中/后具有分隔符,并且在搜索之前必须在搜索参数中预/后挂起相同的字符。
boolean isValidTZ(String tz) {
return VALID_TZS.contains(tz);
}