Vérification des types de données

Nettoyer des données en Java

Dennis Lee

Software Engineer

Pourquoi vérifier les types de données ?

  • Besoin d'analyser du texte provenant de sources externes
  • Des types invalides causent des erreurs à l'exécution
  • Une bonne validation évite les plantages

 

String priceText = "$30.61";
double price = Double.parseDouble(priceText);  // Échec : $ n'est pas valide dans un nombre
Exception in thread "main" java.lang.NumberFormatException
Nettoyer des données en Java

Valider du texte numérique

// Utilitaire pour valider les nombres
import org.apache.commons.lang3.math.NumberUtils; 
String reviewCountText = "165";
System.out.println(NumberUtils.isParsable(reviewCountText));
true
String priceText = "$30.61"; // Nombre invalide
System.out.println(NumberUtils.isParsable(priceText)); // false : contient le symbole $
false
Nettoyer des données en Java

Analyser du texte numérique

private static String validateNumeric(String value) {
    if (NumberUtils.isParsable(value)) return value;  // Retourner si le nombre est valide
    throw new IllegalArgumentException("Invalid: " + value);  // Sinon lever une erreur
}

int reviews = Integer.parseInt(validateNumeric("165"));  // Valider puis analyser

// Retirer $ d'abord double price = Double.parseDouble(validateNumeric("$30.61".replace("$", ""))); System.out.println("reviews: " + reviews + "\nprice in $: " + price);
reviews: 165
price in $: 30.61
Nettoyer des données en Java

Valider les formats de date

import java.time.format.DateTimeFormatter; // Pour formater le modèle de date
private static LocalDate parseDate(String dateStr) {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("M/d/yy");

return LocalDate.parse(dateStr, format); // Convertir la chaîne en LocalDate }
LocalDate date = parseDate("1/10/23"); // "1/10/23" devient 2023-01-10 System.out.println("Date: " + date);
Date: 2023-01-10
Nettoyer des données en Java

Combiner validations numérique et date

private static double parsePrice(String price) {
    return Double.parseDouble(validateNumeric(price.replace("$", "")); // Retirer $
}


// Convertir les champs CSV en BookSales public static BookSales parseSalesData(String[] fields) { String title = fields[0]; LocalDate publishDate = parseDate(fields[1]); // Analyse personnalisée de la date int reviews = Integer.parseInt(validateNumeric(fields[2])); double rating = Double.parseDouble(validateNumeric(fields[3])); double price = parsePrice(fields[4]); // Gérer le format monétaire return new BookSales(title, publishDate, reviews, rating, price); }
Nettoyer des données en Java

Lire des fichiers CSV en toute sécurité

List<BookSales> sales = new ArrayList<>(); // Stocker des objets BookSales


try (BufferedReader reader = new BufferedReader(new FileReader("book_sales.csv"))) {
String line = reader.readLine(); // Ignorer l'en-tête
while ((line = reader.readLine()) != null) { // Lire jusqu'à la fin du fichier String[] fields = line.split(","); // Scinder la ligne CSV en tableau sales.add(parseSalesData(fields)); // Convertir les champs en objet BookSales } }
sales.forEach(System.out::println); // Afficher chaque vente
BookSales[title=Python Crash Course, publishDate=2023-01-10, 
reviewCount=165, rating=4.8, price=30.61]
Nettoyer des données en Java

Résumé : vérification des types de données

  • Validez le texte avant l'analyse pour éviter les erreurs d'exécution
  • Importations clés
    • org.apache.commons.lang3.math.NumberUtils
    • java.time.format.DateTimeFormatter
  • Utilisez NumberUtils.isParsable() pour vérifier les chaînes numériques
  • Gérez plusieurs formats de date avec DateTimeFormatter
  • Intercepter les problèmes de type assure l'intégrité des données
Nettoyer des données en Java

Passons à la pratique !

Nettoyer des données en Java

Preparing Video For Download...