Datenbereinigung in Java
Dennis Lee
Software Engineer
d-MMM-yy sein
// Diese Datumsangaben haben wir aus dem Datensatz extrahiert
List<String> dates = Arrays.asList("4-Jan-22", "1-Aug-22", "7-Jul-22",
"27-Apr-22", "24/02/22");
d-MMM-yyd-MMM-yy abgleichen (z. B. "4-Jan-22")\\d{1,2}-[A-Za-z]{3}-\\d{2}
\\d{1,2} // 1–2 Ziffern für den Tag (z. B. 4 oder 27) - // Bindestrich als Trenner[A-Za-z]{3} // genau 3 Buchstaben für den Monat wie Jan; groß/klein - // Bindestrich als Trenner\\d{2} // genau 2 Ziffern für das Jahr (z. B. 22)
import java.util.regex.Pattern;
// d-MMM-yy abgleichen Pattern datePattern = Pattern.compile("\\d{1,2}-[A-Za-z]{3}-\\d{2}");for (String date : dates) { // Prüfen, ob date dem datePattern entspricht boolean isValid = datePattern.matcher(date).matches(); System.out.println(date + " ist gültig: " + isValid); }
4-Jan-22 ist gültig: true
1-Aug-22 ist gültig: true
7-Jul-22 ist gültig: true
27-Apr-22 ist gültig: true
24/02/22 ist gültig: false
import java.util.regex.Matcher;
Pattern monthPattern = Pattern.compile("[A-Za-z]{3}"); // 3 Buchstaben wie "Jan"for (String date : dates) { Matcher matcher = monthPattern.matcher(date); // Ist monthPattern in date?if (matcher.find()) { // Gibt true zurück, wenn das Muster gefunden wird// matcher.group() gibt den Treffer zurück System.out.println("Monat gefunden: " + matcher.group()); } else { System.out.println("Kein Monat gefunden in: " + date); } }
Monat gefunden: Jan
Monat gefunden: Aug
Monat gefunden: Jul
Monat gefunden: Apr
Kein Monat gefunden in: 24/02/22
import com.google.common.base.CharMatcher;
for (String date : dates) { boolean isValid = // Auf Ziffern in date prüfen CharMatcher.inRange('0', '9').matchesAnyOf(date) &&// Auf Buchstaben (Groß/Klein) in date prüfen CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('A', 'Z')).matchesAnyOf(date) &&CharMatcher.is('-').matchesAnyOf(date); // Auf Bindestriche prüfen System.out.println(date + " hat gültige Zeichen: " + isValid); }
4-Jan-22 hat gültige Zeichen: true
1-Aug-22 hat gültige Zeichen: true
7-Jul-22 hat gültige Zeichen: true
27-Apr-22 hat gültige Zeichen: true
24/02/22 hat gültige Zeichen: false
// Muster d-MMM-yy, z. B. 4-Jan-22
Pattern datePattern = Pattern.compile("\\d{1,2}-[A-Za-z]{3}-\\d{2}");
// Vollständiger Musterabgleich (entspricht date dem datePattern?)
boolean matchesPattern = datePattern.matcher(date).matches();
// Mustersuche (enthält date eine Monats-Teilzeichenkette?)
boolean hasMonth = Pattern.compile("[A-Za-z]{3}").matcher(date).find();
// Zeichenabgleich (enthält date Ziffern?)
boolean hasDigits = CharMatcher.digit().matchesAnyOf(date);
Datenbereinigung in Java