ممارسة: تطبيقات النصوص
هذا الدرس هو تطبيق عملي للمرحلة الثانية، يجمع بين 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.
📖 ملخص
- الجمع بين String و StringBuilder و Math و التاريخ
- تحليل النصوص: عدد الكلمات، الأحرف، الجمل
- البحث والاستبدال
- إحصائيات النص
📝 تمارين
- تحسين: أضف دالة لاستخراج عناوين البريد الإلكتروني
- تشفير: أضف دالة لتشفير النص باستخدام Caesar Cipher
- تحليل المشاعر: أضف دالة بسيطة لتحليل المشاعر (إيجابي/سلبي)
الدرس التالي
في الدرس التالي، سنتعلم الفئات والكائنات — أساسيات البرمجة الكائنية.



