Gibt es eine Möglichkeit, eine Java-Regex zu verwenden, um eine Zeichenfolge in ein bestimmtes Format zu ändern? Zum Beispiel habe ich eine Eingabe String mit einem Datum & Zeit, die mit einer Vielzahl von Trennzeichen eingegeben werden kann, kann ich eine Regex verwenden, um es zu ändern, um ein bestimmtes Trennzeichen zu verwenden? Wenn ich kann, wie kann ich es tun? Zur Zeit bin ich gerade überprüft die Eingabe mit einem regulären Ausdruck und dann eine neue String zusammen mit den gewünschten Trennzeichen wie verketten so:Gibt es eine Möglichkeit, eine Java-Zeichenfolge mit regulären Ausdrücken neu zu formatieren?
Pattern dtPatt = Pattern.compile("\\d\\d\\d\\d[/\\-.]\\d\\d[/\\-.]\\d\\d[tT/\\-.]\\d\\d[:.]\\d\\d[:.]\\d\\d");
Matcher m = dtPatt.matcher(dtIn);
if (m.matches()) {
String dtOut = dtIn.substring(0, 4) + "/" + dtIn.substring(5, 7) + "/" +
dtIn.substring(8, 10) + "-" + dtIn.substring(11, 13) + ":" +
dtIn.substring(14, 16) + ":" + dtIn.substring(17, 19);
// do processing with dtOut
} else {
System.out.println("Error! Bad date/time entry.");
}
Es scheint, wie sollte ich in der Lage sein, dies mit einem regulären Ausdruck zu tun, aber viele googeln, lesen und experimentieren hat nichts ergeben, was funktioniert.
Als eine Randnotiz, je nachdem, wo Sie dies setzen, könnte es furchtbar ineffizient wegen der Erstellung des Musters werden. – Woot4Moo
@ Woot4Moo: Danke für den Gedanken. In der Produktion würde ich eine unbekannte - und theoretisch unbegrenzte - Anzahl von Datum/Zeit-Strings bearbeiten. – GreenMatt
@GreenMatt in diesem Fall sollten Sie vielleicht von der Verwendung des Java Regex abweichen und es an eine separate Sprache wie Perl oder Python weitergeben. Ich mag mich irren, aber ich glaube, dass keine dieser Sprachen kompiliert wird und das Öffnen eines Datenstroms weniger intensiv ist, als das Biest jedes Mal neu zu kompilieren. – Woot4Moo