Я пытаюсь переформатировать некоторые строки, которые являются датами. У некоторых из них есть год в начале, и я бы хотел, чтобы у них был свой год. Я также хочу стандартизировать символ разделителя на знак подчеркивания.Переупорядочивание массива в массивList в определенной позиции
Пример ввода:
07_April_2008
16_05_2012
2016-01-28
14/12/2009
Желаемый результат:
07_April_2008
16_05_2012
01_28_2016
14_12_2009
Вот моя первая попытка, но я получаю сообщение об ошибке, когда я это сделать:
public String format(String date) {
String[] format = null;
date = date.replace("-", "_");
date = date.replace("/", "_");
if (date.contains("_")) {
format = date.split("_");
// new arrayList to add rearrangement to
ArrayList<String> formatNew = new ArrayList<String>();
for (int i = 0; i < format.length; i++) {
if (format[i].matches("\\d{4}")) {
formatNew.add(2, format[i]);
} else {
formatNew.add(format[i]);
}
}
}
return date;
}
Это производит ошибка:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
Я думаю, что год подбирается отлично, но два других элемента в массиве нет.
Не уверен, что вы просите. Исключение указывает вам, что именно не так; вы пытаетесь получить доступ к индексу ** 2 **; в массиве длины 0. Другими словами: не предполагайте, что 'date.split()' создает массив с тремя элементами - проверьте его, чтобы быть уверенным. И зачем вам нужны другие люди, чтобы понять: «Может быть, я должен распечатать некоторые инструкции трассировки, чтобы увидеть, что происходит, или, или heck, запустить его в отладчике, чтобы узнать, что происходит для каждого значения» ?! – GhostCat
Вы можете использовать 'SimpleDateFormat' для дат синтаксического анализа и форматирования. –