ممارسة: تطبيقات النصوص

هذا الدرس هو تطبيق عملي للمرحلة الثانية، يجمع بين String وStringBuilder وMath والتاريخ.

متطلبات المشروع

بناء نظام لإدارة النصوص يدعم:

الكود الكامل

JAVA
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;

public class TextAnalyzer {
    private String text;
    private LocalDateTime createdAt;
    
    public TextAnalyzer(String text) {
        this.text = text;
        this.createdAt = LocalDateTime.now();
    }
    
    // عدد الكلمات
    public int getWordCount() {
        if (text == null || text.trim().isEmpty()) return 0;
        return text.trim().split("\\s+").length;
    }
    
    // عدد الأحرف
    public int getCharCount() {
        return text.length();
    }
    
    // عدد الأحرف بدون مسافات
    public int getCharCountNoSpaces() {
        return text.replace(" ", "").length();
    }
    
    // عدد الأسطر
    public int getLineCount() {
        return text.split("\n").length;
    }
    
    // عدد الجمل
    public int getSentenceCount() {
        return text.split("[.!?]+").length;
    }
    
    // البحث عن كلمة
    public int findWord(String word) {
        return text.toLowerCase().indexOf(word.toLowerCase());
    }
    
    // عدد مرات تكرار كلمة
    public int countWord(String word) {
        String lower = text.toLowerCase();
        String lowerWord = word.toLowerCase();
        int count = 0;
        int index = 0;
        
        while ((index = lower.indexOf(lowerWord, index)) != -1) {
            count++;
            index += lowerWord.length();
        }
        return count;
    }
    
    // استبدال كلمة
    public String replaceWord(String oldWord, String newWord) {
        return text.replace(oldWord, newWord);
    }
    
    // استبدال جميع (مع تعبير نمطي)
    public String replaceAll(String regex, String replacement) {
        return text.replaceAll(regex, replacement);
    }
    
    // عكس النص
    public String reverse() {
        return new StringBuilder(text).reverse().toString();
    }
    
    // تحويل إلى أحرف كبيرة
    public String toUpperCase() {
        return text.toUpperCase();
    }
    
    // تحويل إلى أحرف صغيرة
    public String toLowerCase() {
        return text.toLowerCase();
    }
    
    // إزالة المسافات الزائدة
    public String normalizeSpaces() {
        return text.trim().replaceAll("\\s+", " ");
    }
    
    // استخراج الكلمات
    public ArrayList<String> extractWords() {
        return new ArrayList<>(Arrays.asList(text.trim().split("\\s+")));
    }
    
    // إحصائيات
    public void printStatistics() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        
        System.out.println("=== إحصائيات النص ===");
        System.out.println("تاريخ التحليل: " + createdAt.format(formatter));
        System.out.println("عدد الكلمات: " + getWordCount());
        System.out.println("عدد الأحرف: " + getCharCount());
        System.out.println("عدد الأحرف (بدون مسافات): " + getCharCountNoSpaces());
        System.out.println("عدد الأسطر: " + getLineCount());
        System.out.println("عدد الجمل: " + getSentenceCount());
        System.out.println("متوسط طول الكلمة: " + String.format("%.1f", 
            (double) getCharCountNoSpaces() / getWordCount()));
    }
    
    // طباعة النص مع معلومات
    public void printText() {
        System.out.println("--- النص ---");
        System.out.println(text);
        System.out.println("--- نهاية النص ---");
    }
    
    public static void main(String[] args) {
        String sample = "Java هي لغة برمجة قوية. تُستخدم في تطوير التطبيقات. " +
                       "Java سهلة التعلم وممتعة!";
        
        TextAnalyzer analyzer = new TextAnalyzer(sample);
        
        analyzer.printText();
        System.out.println();
        analyzer.printStatistics();
        
        System.out.println("\n--- البحث ---");
        System.out.println("موقع 'Java': " + analyzer.findWord("Java"));
        System.out.println("عدد مرات 'Java': " + analyzer.countWord("Java"));
        
        System.out.println("\n--- الكلمات ---");
        ArrayList<String> words = analyzer.extractWords();
        for (int i = 0; i < words.size(); i++) {
            System.out.println((i + 1) + ". " + words.get(i));
        }
    }
}

ناتج ejemplo

TEXT
--- النص ---
Java هي لغة برمجة قوية. تُستخدم في تطوير التطبيقات. Java سهلة التعلم وممتعة!
--- نهاية النص ---

=== إحصائيات النص ===
تاريخ التحليل: 2026-06-25 14:30:45
عدد الكلمات: 14
عدد الأحرف: 82
عدد الأحرف (بدون مسافات): 72
عدد الأسطر: 1
عدد الجمل: 3
متوسط طول الكلمة: 5.1

--- البحث ---
موقع 'Java': 0
عدد مرات 'Java': 2

--- الكلمات ---
1. Java
2. هي
3. لغة
4. برمجة
5. قوية.
...

المفاهيم المستخدمة

المفهوم التطبيق
String البحث، الاستبدال، التقسيم
StringBuilder عكس النص
Math حساب المتوسط
LocalDateTime تاريخ ووقت التحليل
ArrayList قائمة الكلمات

❓ أسئلة شائعة

س كيف أتعامل مع النصوص العربية في Java؟
ج Java يدعم Unicode بشكل كامل. النصوص العربية تعمل تلقائيًا.
س هل يمكن تحليل ملف نصي؟
ج نعم، يمكنك قراءة الملف وتخزين المحتوى في TextAnalyzer.

📖 ملخص

📝 تمارين

  1. تحسين: أضف دالة لاستخراج عناوين البريد الإلكتروني
  2. تشفير: أضف دالة لتشفير النص باستخدام Caesar Cipher
  3. تحليل المشاعر: أضف دالة بسيطة لتحليل المشاعر (إيجابي/سلبي)

الدرس التالي

في الدرس التالي، سنتعلم الفئات والكائنات — أساسيات البرمجة الكائنية.

100%