在 Java 中使用 StringTokenizer 检查几个项目

Check several items with StringTokenizer in Java

我需要检查一个包含多个单词的字符串是否在另一个字符串的开头。例如,我有一个包含以下内容的字符串列表: "in the morning"、"in the evening" 等,我想检查我的字符串 st = "in the evening at 5" 是否以列表中的任何字符串开头。我需要一个布尔值答案,最好是一个 StringTokenizer 和剩余部分 "at 5".

我的问题是,现在我的字符串 st 被 StringTokenizer 拆分(出于不同的原因我需要它),所以我不能只使用 substring 或 indexOf 方法来检查它是否包含在内。

有什么简单的方法吗?或者有没有办法将 Tokenizer 的剩余项再次转换为字符串?

谢谢

试试这个:

String sStr = "in the morning";
String str = "in the morning at 5";
List<String> searchStringList = new ArrayList<String>();
searchStringList.add(sStr);

for(String searchString : searchStringList) {
    if(str.startsWith(searchString)) {
        return true;
    }
}

也许是这样的?

private static String[] keys = {"in the morning", "in the evening"};

class Hit {
    String key;
    String remainder;
    Hit(String key, String remainder) {
        this.key = key;
        this.remainder = remainder;
    }
}

public Optional<Hit> findHit(String input) {
    for(String key : keys) {
        if (input.startsWith(key)) {
            return Optional.of(new Hit(key, input.substring(key.length())));
        }
    }
    return Optional.empty();
}

编辑:相关问题Get Position in Original String from `StringTokenizer`