Veri türü doğrulaması

Java'da Veri Temizleme

Dennis Lee

Software Engineer

Neden veri türlerini kontrol etmelisiniz?

  • Dış veri kaynaklarından metin ayrıştırmanız gerekir
  • Geçersiz veri türleri çalışma zamanı hatalarına yol açar
  • Doğru doğrulama çöküşleri önler

 

String priceText = "$30.61";
double price = Double.parseDouble(priceText);  // Hata: $ sayı içinde geçerli değil
Exception in thread "main" java.lang.NumberFormatException
Java'da Veri Temizleme

Sayısal metni doğrulama

// Sayı doğrulama yardımcı sınıfı
import org.apache.commons.lang3.math.NumberUtils; 
String reviewCountText = "165";
System.out.println(NumberUtils.isParsable(reviewCountText));
true
String priceText = "$30.61"; // Geçersiz sayı
System.out.println(NumberUtils.isParsable(priceText)); // false: $ sembolü var
false
Java'da Veri Temizleme

Sayısal metni ayrıştırma

private static String validateNumeric(String value) {
    if (NumberUtils.isParsable(value)) return value;  // Geçerliyse döndür
    throw new IllegalArgumentException("Invalid: " + value);  // Değilse hata fırlat
}

int reviews = Integer.parseInt(validateNumeric("165"));  // Doğrula, sonra ayrıştır

// Önce $ kaldırın double price = Double.parseDouble(validateNumeric("$30.61".replace("$", ""))); System.out.println("reviews: " + reviews + "\nprice in $: " + price);
reviews: 165
price in $: 30.61
Java'da Veri Temizleme

Tarih biçimlerini doğrulama

import java.time.format.DateTimeFormatter; // Tarih desen biçimlendirme için
private static LocalDate parseDate(String dateStr) {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("M/d/yy");

return LocalDate.parse(dateStr, format); // Dizeyi LocalDate'e dönüştür }
LocalDate date = parseDate("1/10/23"); // "1/10/23" -> 2023-01-10 System.out.println("Date: " + date);
Date: 2023-01-10
Java'da Veri Temizleme

Sayı ve tarih doğrulamasını birleştirme

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


// CSV alanlarını BookSales'e dönüştür public static BookSales parseSalesData(String[] fields) { String title = fields[0]; LocalDate publishDate = parseDate(fields[1]); // Özel tarih ayrıştırma int reviews = Integer.parseInt(validateNumeric(fields[2])); double rating = Double.parseDouble(validateNumeric(fields[3])); double price = parsePrice(fields[4]); // Para birimi biçimini işle return new BookSales(title, publishDate, reviews, rating, price); }
Java'da Veri Temizleme

CSV dosyalarını güvenle okuma

List<BookSales> sales = new ArrayList<>(); // BookSales nesnelerini depola


try (BufferedReader reader = new BufferedReader(new FileReader("book_sales.csv"))) {
String line = reader.readLine(); // Başlık satırını atla
while ((line = reader.readLine()) != null) { // Dosya sonuna kadar oku String[] fields = line.split(","); // CSV satırını diziye böl sales.add(parseSalesData(fields)); // Alanları BookSales nesnesine dönüştür } }
sales.forEach(System.out::println); // Her satışı yazdır
BookSales[title=Python Crash Course, publishDate=2023-01-10, 
reviewCount=165, rating=4.8, price=30.61]
Java'da Veri Temizleme

Özet: veri türü doğrulaması

  • Çalışma zamanı hatalarını önlemek için metni ayrıştırmadan önce doğrulayın
  • Temel içe aktarmalar
    • org.apache.commons.lang3.math.NumberUtils
    • java.time.format.DateTimeFormatter
  • Sayısal dizeleri kontrol etmek için NumberUtils.isParsable() kullanın
  • Birden çok tarih biçimini DateTimeFormatter ile yönetin
  • Tür hatalarını yakalamak veri bütünlüğünü sağlar
Java'da Veri Temizleme

Hadi pratik yapalım!

Java'da Veri Temizleme

Preparing Video For Download...