@SeniorDmitry

Как заменить все значения?

Доброй ночи ! Есть стринга в кот-й содержится дата такого формата
12-дек-2015
13-янв-2015 и т.п.
не пойму как разом все значение поменять на числовые ?
Попробовал replase'ом , но получаеться , что строки дублируеются =(

for(int i=0; i <= listOne.getLastRowNum(); i++){
            String xlsxList = listOne.getRow(i).getCell(1).getStringCellValue();

}
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Вам стоит научиться задавать вопросы. Постановка настолько скверная, что остаётся только предполагать и домысливать. Судя по приложенному коду, данные берутся из Excel. Видимо, в 1-й ячейке каждой строки содержится строковое значение вида "12-дек-2015". Требуется трёхсимвольные обозначения месяца заменять на числовые.

import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.Iterator;
import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.util.Iterator;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public class DateFormatDemo {
    private static final Map<String, String> months;

    static {
        months = new HashMap<String, String>();
        months.put("янв", "01");
        months.put("фев", "02");
        months.put("мар", "03");
        months.put("апр", "04");
        months.put("май", "05");
        months.put("июн", "06");
        months.put("июл", "07");
        months.put("авг", "08");
        months.put("сен", "09");
        months.put("окт", "10");
        months.put("ноя", "11");
        months.put("дек", "12");
    }

    private static String changeFormat(String in) {
        int startPosition = in.indexOf('-');
        if(startPosition != -1) {
            int endPosition = in.indexOf('-', startPosition + 1);
            if(endPosition != -1) {
                String strMonth = in.substring(startPosition + 1, endPosition);
                if(months.containsKey(strMonth)) {
                    String intMonth = months.get(strMonth);
                    return in.replace(strMonth, intMonth);
                }
            }
        }
        throw new IllegalArgumentException("Invalid date format");
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {
        if(args.length < 1) {
            System.err.println("Missing filename!");
            return;
        }

        InputStream in = new FileInputStream(args[0]);
        HSSFWorkbook wb = new HSSFWorkbook(in);
        Sheet sheet = wb.getSheetAt(0);
        Iterator<Row> it = sheet.iterator();

        Spliterator<Row> spliterator = Spliterators.spliteratorUnknownSize(it, Spliterator.ORDERED);
        Stream<Row> stream = StreamSupport.stream(spliterator, false);

        stream
            .map(r -> r.getCell(1).getStringCellValue())
            .filter(s -> s.length() > 0)
            .map(DateFormatDemo::changeFormat)
            .forEach(System.out::println);
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы