日付である文字列を再フォーマットしようとしています。彼らの中には初めに年があり、終わりに来る年を持つことを望みます。私はまた、区切り文字をアンダースコアに標準化したい。配列を特定の位置でarrayListに並べ替える
例入力:
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つの要素はないと思う。 Javaのドキュメントから
あなたが何を求めているのかよく分かりません。例外は何が間違っているかを正確に示します。あなたはインデックス** 2 **にアクセスしようとしています。言い換えれば、 'date.split()'が3つの要素を持つ配列を作成すると仮定してはいけません。そして、なぜ、あなたは何が起こっているのかを知るためにいくつかのトレースステートメントを出力しなければならないのか、それともデバッガで実行して各値がどうなるのかを知るために他の人が必要なのですか? – GhostCat
日付の解析と書式設定に 'SimpleDateFormat'を使用できます。 –