被传递的字符串是否在另一个字符串中Java的

时间:2014-05-16 16:50:27

标签: java string search

所以我遇到的问题似乎是一件非常简单的事情,我现在无法解决这个问题。

我正在尝试确定传递给某个方法的String是否是有效的时区缩写(PDT,EST等)我有一个字符串,只列出我应该使用的所有100个左右的缩写只有一个空格介于每个之间,我希望能够检查传递的缩写是否在我列出的长字符串中的任何位置,然后如果不是,则返回错误消息。

有没有人对如何搜索长字符串有任何想法?或者我不应该首先使用字符串?提前感谢你们给我的任何帮助!

4 个答案:

答案 0 :(得分:4)

你不应该首先使用字符串。

将所有可能性添加到静态Set,然后使用输入字符串调用contains()

更好的是,Joda-Time可以为您验证时区,或者通过检查时区字符串来消除您尝试解决的问题。

答案 1 :(得分:0)

您可以在long String上使用方法contains。或者,您可以使用数组而不是长字符串,如果添加更多缩写,则可能更容易维护。

对于一组缩写,请使用ArrayUtils.contains(它是Apache Commons的一部分,而不是标准库)。

答案 2 :(得分:0)

我不会为此使用字符串。

如果您的时区字符串类似于:

String TIMEZONES = "PDT EST CET ..."

然后您可以使用下一个代码转换为Set<String>

Set<String> VALID_TZS = new HashSet<>(Arrays.asList(TIMEZONES.split(" ")));

并检查您的代码是否是有效的时区:

boolean isValidTZ(String tz) {
    return VALID_TZS.contains(tz);
}

答案 3 :(得分:-1)

String ALL_ABRBREVIATIONS = ...; // all possible

public boolean isValid(String toCheck) {
  return ALL_ABRBREVIATIONS.contains(toCheck);
}