Java: النصوص — الأساسيات

النصوص (Strings) هي واحدة من أكثر أنواع البيانات استخدامًا في Java. في هذا الدرس، سنتعلم كيفية التعامل مع النصوص.

1. إنشاء النصوص

(1) الطريقة 1: باستخدام Literal

JAVA
String greeting = "مرحباً";
String name = "أحمد";
String empty = "";

(2) الطريقة 2: باستخدام new

JAVA
String greeting = new String("مرحباً");
String name = new String("أحمد");

(3) الفرق بين الطريقتين

JAVA
String s1 = "مرحباً";
String s2 = "مرحباً";
String s3 = new String("مرحباً");

System.out.println(s1 == s2);  // true (نفس المرجع)
System.out.println(s1 == s3);  // false (مراجع مختلفة)
System.out.println(s1.equals(s3));  // true (نفس القيمة)

2. الوصول إلى الأحرف

JAVA
String text = "مرحباً";

// الوصول إلى حرف معين
char first = text.charAt(0);  // 'م'
char last = text.charAt(text.length() - 1);  // 'ا'

// طول النص
int length = text.length();  // 6

3. العمليات الأساسية

(1) الربط (Concatenation)

JAVA
String firstName = "أحمد";
String lastName = "محمد";
String fullName = firstName + " " + lastName;  // "أحمد محمد"

// باستخدام concat
String fullName2 = firstName.concat(" ").concat(lastName);

(2) تكرار النص (Java 11+)

JAVA
String repeated = "Ha".repeat(3);  // "HaHaHa"
String stars = "*".repeat(10);     // "**********"

4. البحث في النص

(1) indexOf — البحث عن موقع

JAVA
String text = "مرحباً بالعالم";

int pos1 = text.indexOf("بالعالم");  // 7
int pos2 = text.indexOf("غيرموجود");  // -1 (غير موجود)
int pos3 = text.indexOf("م");  // 0 (أول ظهور)

(2) contains — التحقق من الوجود

JAVA
String text = "مرحباً بالعالم";

boolean has1 = text.contains("بالعالم");  // true
boolean has2 = text.contains("غيرموجود");  // false

(3) startsWith و endsWith

JAVA
String filename = "document.pdf";

boolean isPDF = filename.endsWith(".pdf");  // true
boolean isDoc = filename.startsWith("doc");  // true

5. قص النصوص (Substring)

JAVA
String text = "مرحباً بالعالم";

// من الفهرس 7 إلى النهاية
String sub1 = text.substring(7);  // "بالعالم"

// من الفهرس 0 إلى 6
String sub2 = text.substring(0, 6);  // "مرحباً"

6. تحويل الحروف

JAVA
String text = "Hello World";

String lower = text.toLowerCase();  // "hello world"
String upper = text.toUpperCase();  // "HELLO WORLD"

7. إزالة المسافات

JAVA
String text = "  مرحباً  ";

String trimmed = text.trim();  // "مرحباً"
String stripped = text.strip();  // "مرحباً" (Java 11+)

8. استبدال النصوص

JAVA
String text = "مرحباً بالعالم";

String replaced1 = text.replace("عالم", "Java");  // "مرحباً بـJava"
String replaced2 = text.replaceAll("[aeiou]", "*");  // استبدال بتعبير نمطي

9. تقسيم النصوص

JAVA
String csv = "أحمد,محمد,علي";

// تقسيم بفاصلة
String[] names = csv.split(",");
// ["أحمد", "محمد", "علي"]

// تقسيم بمسافة
String sentence = "مرحباً بالعالم";
String[] words = sentence.split(" ");
// ["مرحباً", "بالعالم"]

10. تحويل الأنواع

(1) رقم إلى نص

JAVA
int num = 42;
String text1 = String.valueOf(num);  // "42"
String text2 = Integer.toString(num);  // "42"
String text3 = "" + num;  // "42"

(2) نص إلى رقم

JAVA
String text = "42";

int num1 = Integer.parseInt(text);  // 42
double num2 = Double.parseDouble("3.14");  // 3.14
boolean bool = Boolean.parseBoolean("true");  // true

11. مقارنة النصوص

JAVA
String s1 = "Hello";
String s2 = "Hello";
String s3 = "hello";

// مقارنة بالقيمة
System.out.println(s1.equals(s2));  // true
System.out.println(s1.equals(s3));  // false

// مقارنة بدون حساسية لحالة الأحرف
System.out.println(s1.equalsIgnoreCase(s3));  // true

// مقارنة ترتيبية
int cmp = s1.compareTo(s3);  // سالب (s1 < s3)

▶ مثال

JAVA
String s = "Hello, Java!";
System.out.println(s.length());    // 12
System.out.println(s.toUpperCase()); // HELLO, JAVA!
System.out.println(s.substring(7));  // Java!
▶ جرّب الكود

❓ أسئلة شائعة

س لماذا نستخدم equals بدلاً من ==؟
ج == يقارن المراجع (عناوين الذاكرة). equals يقارن القيم الفعلية.
س هل String قابلة للتغيير (Mutable)؟
ج لا، String غير قابلة للتغيير (Immutable). أي تعديل يُنشئ نصًا جديدًا.
س ما هو StringBuilder؟
ج StringBuilder هو فئة قابلة للتغيير لبناء النصوص بكفاءة. سنتعلمه في الدرس التالي.

📖 ملخص

📝 تمارين

  1. عكس النص: اكتب دالة تعكس نصًا (مثل "مرحباً" → "ًاحبرم")
  2. عد الكلمات: اكتب دالة تعد عدد الكلمات في نص
  3. التحقق من Palindrome: اكتب دالة تتحقق مما إذا كان النص قراءة من اليمين واليسار متساوية

12. الدرس التالي

في الدرس التالي، سنتعلم StringBuilder — بناء النصوص بكفاءة.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%