В потоках Java преобразуйте список строк, разделенных запятыми, в список, но удалите подстроку перед каждой строкой, если она присутствует

#java #string #java-stream

#java #строка #java-поток

Вопрос:

С потоками Java я могу преобразовать список String s, разделенный запятыми, в a List , но мне также нужно удалить подстроку перед каждой строкой, если она присутствует. Как я могу сделать это в потоках?

Что у меня есть до сих пор:

 String source = "TF03,TF05,TF06,SQ07";
List<String> sourceList = Stream.of(source.split(",", -1))
    .collect(Collectors.toList()); 
 

Теперь мне нужно удалить «TF» или «SQ» или другие префиксы в каждой строке.

Мне нужно отредактировать исходный вопрос:

Мне нужно удалить «TF» или «SQ» или другие префиксы, но этот префикс также может быть в виде строки.

  String substringToRemove = "TF"; 
 String source = "TF03,TF05,TF06,SQ07";
 List<String> sourceList = Stream.of(source.split(",", -1))
    .collect(Collectors.toList()); 
 

Ответ №1:

Вы можете использовать Stream#map with String#replaceAll .

 String source = "TF03,TF05,TF06,SQ07";
List<String> sourceList = Stream.of(source.split(",", -1))
    .map(str -> str.replaceAll("^TF|SQ", ""))
    .collect(Collectors.toList());