Data opschonen in Java
Dennis Lee
Software Engineer
d-MMM-yy
// Deze datums zijn uit onze dataset gehaald
List<String> dates = Arrays.asList("4-Jan-22", "1-Aug-22", "7-Jul-22",
"27-Apr-22", "24/02/22");
d-MMM-yy volgend-MMM-yy (zoals "4-Jan-22")\\d{1,2}-[A-Za-z]{3}-\\d{2}
\\d{1,2} // 1-2 cijfers voor dag (zoals 4 of 27) - // letterlijk koppelstreepje[A-Za-z]{3} // precies 3 letters voor maand zoals Jan; hoofd- of kleine letters - // letterlijk koppelstreepje\\d{2} // precies 2 cijfers voor jaar (zoals 22)
import java.util.regex.Pattern;
// Match d-MMM-yy Pattern datePattern = Pattern.compile("\\d{1,2}-[A-Za-z]{3}-\\d{2}");for (String date : dates) { // Check of date overeenkomt met datePattern boolean isValid = datePattern.matcher(date).matches(); System.out.println(date + " is geldig: " + isValid); }
4-Jan-22 is geldig: true
1-Aug-22 is geldig: true
7-Jul-22 is geldig: true
27-Apr-22 is geldig: true
24/02/22 is geldig: false
import java.util.regex.Matcher;
Pattern monthPattern = Pattern.compile("[A-Za-z]{3}"); // 3 letters zoals "Jan"for (String date : dates) { Matcher matcher = monthPattern.matcher(date); // Staat monthPattern in date?if (matcher.find()) { // Geeft true terug als het patroon is gevonden// matcher.group() geeft de match terug System.out.println("Maand gevonden: " + matcher.group()); } else { System.out.println("Geen maand gevonden in: " + date); } }
Maand gevonden: Jan
Maand gevonden: Aug
Maand gevonden: Jul
Maand gevonden: Apr
Geen maand gevonden in: 24/02/22
import com.google.common.base.CharMatcher;
for (String date : dates) { boolean isValid = // Controleer op cijfers in date CharMatcher.inRange('0', '9').matchesAnyOf(date) &&// Controleer op letters (hoofd- en kleine) in date CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('A', 'Z')).matchesAnyOf(date) &&CharMatcher.is('-').matchesAnyOf(date); // Controleer op koppeltekens in date System.out.println(date + " heeft geldige tekens: " + isValid); }
4-Jan-22 heeft geldige tekens: true
1-Aug-22 heeft geldige tekens: true
7-Jul-22 heeft geldige tekens: true
27-Apr-22 heeft geldige tekens: true
24/02/22 heeft geldige tekens: false
// Definieer patroon d-MMM-yy, zoals 4-Jan-22
Pattern datePattern = Pattern.compile("\\d{1,2}-[A-Za-z]{3}-\\d{2}");
// Volledige patroonmatch (komt date overeen met datePattern?)
boolean matchesPattern = datePattern.matcher(date).matches();
// Patroon zoeken (heeft date een maand-substring?)
boolean hasMonth = Pattern.compile("[A-Za-z]{3}").matcher(date).find();
// Tekens matchen (bevat date cijfers?)
boolean hasDigits = CharMatcher.digit().matchesAnyOf(date);
Data opschonen in Java