Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递的字符串是否在另一个字符串中的任何位置?JAVA_Java_String_Search - Fatal编程技术网

传递的字符串是否在另一个字符串中的任何位置?JAVA

传递的字符串是否在另一个字符串中的任何位置?JAVA,java,string,search,Java,String,Search,所以,我有一个问题,那似乎是一件非常简单的事情,我现在无法集中注意力 我试图确定传递给某个方法的字符串是否是有效的时区缩写(PDT、EST等)我有一个字符串,它列出了我应该使用的大约100个缩写,每个缩写之间只有一个空格,我希望能够检查传递的缩写是否在我列出的长字符串中的任何位置,如果不是,则返回错误消息 有人知道如何搜索长字符串吗?或者我应该首先不使用字符串吗?提前感谢你们能给我的任何帮助 首先不应该使用字符串 String ALL_ABRBREVIATIONS = ...; // all p

所以,我有一个问题,那似乎是一件非常简单的事情,我现在无法集中注意力

我试图确定传递给某个方法的字符串是否是有效的时区缩写(PDT、EST等)我有一个字符串,它列出了我应该使用的大约100个缩写,每个缩写之间只有一个空格,我希望能够检查传递的缩写是否在我列出的长字符串中的任何位置,如果不是,则返回错误消息


有人知道如何搜索长字符串吗?或者我应该首先不使用字符串吗?提前感谢你们能给我的任何帮助

首先不应该使用字符串

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);
}