从Java中的String获取子串

Cap*_*i-N 5 java string

我有以下文字:

......,Niedersachsen,自2009年3月3日起不收费,类别:...,

现在我想提取NOT IN CHARGE SINCE:逗号后的日期.所以我只需要03.2009在我的子串中得到结果.

那我怎么办呢?

String substr = "not in charge since:";
String before = s.substring(0, s.indexOf(substr));
String after = s.substring(s.indexOf(substr),s.lastIndexOf(","));
Run Code Online (Sandbox Code Playgroud)

编辑

for (String s : split) {
    s = s.toLowerCase();
    if (s.contains("ex peps")) {
        String substr = "not in charge since:";
        String before = s.substring(0, s.indexOf(substr));
        String after = s.substring(s.indexOf(substr), s.lastIndexOf(","));

        System.out.println(before);
        System.out.println(after);
        System.out.println("PEP!!!");
    } else {
        System.out.println("Line ok");
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的结果.

YCF*_*F_L 7

您可以使用模式,例如:

String str = "Niedersachsen,NOT IN CHARGE SINCE: 03.2009, CATEGORY";
Pattern p = Pattern.compile("\\d{2}\\.\\d{4}");
Matcher m = p.matcher(str);

if (m.find()) {
    System.out.println(m.group());
}
Run Code Online (Sandbox Code Playgroud)

产量

03.2009
Run Code Online (Sandbox Code Playgroud)

注意:如果您想在所有String中获得类似日期,则可以使用while而不是if.


编辑

或者您可以使用:

String str = "Niedersachsen,NOT IN CHARGE SINCE: 03.03.2009, CATEGORY";
Pattern p = Pattern.compile("SINCE:(.*?)\\,");
Matcher m = p.matcher(str);

if (m.find()) {
    System.out.println(m.group(1).trim());
}
Run Code Online (Sandbox Code Playgroud)