Строковый фильтр игнорирует регулярные выражения - PullRequest
0 голосов
/ 15 января 2020

Я хочу отфильтровать список строк, но игнорирую регулярные выражения. Например: при поиске «test.xy» должны отображаться только записи типа «test.xy» или «abctest.xy», но не «testaxy». Я не хочу "." работает как джокер.

Как я могу это сделать?

Спасибо заранее!

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Если вы хотите отфильтровать строки и собрать их в новый список, вы можете сделать это следующим образом:

    List<String> strings = List.of("mytest.xy",
            "abctest.xy", "test.xy", "testaxy", "testy");
    String target = "test.xy";
    List<String> result = strings.stream()
            .filter(str -> str.contains(target))
            .collect(Collectors.toList());

    result.forEach(System.out::println);

Печать

mytest.xy
abctest .xy
test.xy

2 голосов
/ 15 января 2020

Ниже приведен пример:

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("test.xy", "abctest.xy", "testaxy", "testy");
        for (String s : list) {
            if (s.contains("test.xy"))
                System.out.println(s);
        }

        // Display using Stream
        System.out.println("\nFilter and display using Stream:");
        list.stream().filter(s -> s.contains("test.xy")).forEach(System.out::println);
    }
}

Вывод:

test.xy
abctest.xy

Filter and display using Stream:
test.xy
abctest.xy
...