Замена мест значений с помощью метода разделения и замены

#java #string #methods #split #output

Вопрос:

Это мой метод, который возвращает список строковых значений, подобных этому: 10x2021

И это значение, которое я отправил своему методу.

  List<HistoryItem> historyItems = Arrays.asList
                (
                        new HistoryItem(364, "10x2021", Long.valueOf("009"))

                );



public static List<String> foo(List<HistoryItem> historyItems) {
    List<HistoryItem> collect = historyItems.stream().filter(item -> item.getCreditStatus().equals(Long.valueOf("009")) || item.getCreditStatus().equals(Long.valueOf("0010")))
            .collect(Collectors.toList());
    List<String> reportingPeriods = new ArrayList<>();
    for (HistoryItem historyItem : historyItems) {
        reportingPeriods.add(historyItem.getReportingPeriod());
    }

    return reportingPeriods;
}
 

Что я хочу сделать, так это я хочу, чтобы результат выглядел так 2021-10 , 2021-9, not 10x2021 . Я не мог использовать методы строки именно так, как хотел. Как решить эту проблему?

Комментарии:

1. Можете ли вы свести это к конкретной проблеме. Ты пытаешься превратиться 10x2021 в 2021-10 ? Это можно сделать с помощью регулярного выражения или строки.разделить

2. да, так и есть. Я хочу перевернуть его и поставить запятую в конце.

Ответ №1:

Это должно исправить это для вас:

 List<String> reportingPeriods = historyItems.stream().map(hI -> { 
String[] splitted = hI.getReportingPeriod().split("x");
return splitted [1]   "-"   splitted [0]; }).collect(Collectors.toList());
 

Комментарии:

1. Мы кое-что забыли, не могли бы вы рассказать нам, как поставить запятую в конце? @Али Бен Заррук

2. Вы имеете в виду что-то вроде 2021-9, 2021-9, 2021-9 ?

3. Да, хочу. 2021-10 , 2021-9, 2021-8 вот так.

4. вы можете выполнить String.join(«,», reportingPeriods) или вместо сбора в список сразу перечислить сбор в объединенную строку с помощью .collect(Collectors.joining(«,»))

5. Строка с разделенными запятыми периодами = historyItems.stream().карта(hI -> { Строка[] разделена = hI.getReportingPeriod().разделена(«x»); возврат разделен [1] «-» разделен [0]; }).сбор(Сборщики.объединение(«,»));