مقارنة السلاسل النصية
جزء من قسم Fundamentals في رحلة Java على Coddy — الدرس 70 من 73.
في لغة Java، لا تعد مقارنة السلاسل النصية (strings) بسيطة مثل مقارنة أنواع البيانات الأولية (primitive data types) مثل الأعداد الصحيحة أو الأحرف. لا يمكنك استخدام المعامل == لمقارنة السلاسل النصية من حيث التساوي لأن السلاسل النصية هي كائنات (objects)، وسيقوم == بمقارنة عناوين الذاكرة الخاصة بها، وليس محتوياتها. بدلاً من ذلك، تحتاج إلى استخدام طرق (methods) محددة توفرها فئة String لمقارنة الأحرف الفعلية داخل السلاسل النصية.
فيما يلي الطرق الأساسية لمقارنة السلاسل النصية:
equals(Object other): يقارن السلسلة النصية بكائن آخر (عادةً ما يكون سلسلة نصية أخرى). يعيدtrueإذا كانت السلاسل النصية تحتوي على نفس الأحرف وبنفس الترتيب، وfalseخلاف ذلك. هذه الطريقة حساسة لحالة الأحرف.
equalsIgnoreCase(String other): مشابه لـequals، ولكنه يتجاهل حالة الأحرف. يعيدtrueإذا كانت السلاسل النصية تحتوي على نفس الأحرف، بغض النظر عن حالة الأحرف، وfalseخلاف ذلك.
compareTo(String other): يقارن بين سلسلتين نصيتين معجمياً (بناءً على قيم Unicode الخاصة بهما). يعيد القيمة 0 إذا كانت السلسلتان متساويتين، ورقماً سالباً إذا كانت السلسلة الأولى أصغر من الثانية، ورقماً موجباً إذا كانت السلسلة الأولى أكبر من الثانية. هذه الطريقة حساسة لحالة الأحرف.
compareToIgnoreCase(String other): مشابه لـcompareTo، ولكن يتجاهل حالة الأحرف.
إليك مثال:
String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";
boolean eq1 = str1.equals(str2); // صحيح
boolean eq2 = str1.equals(str3); // خطأ
boolean eq3 = str1.equalsIgnoreCase(str3); // صحيح
int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // قيمة سالبة
int cmp3 = str4.compareTo(str1); // قيمة موجبة
int cmp4 = str1.compareToIgnoreCase(str3); // 0التحدي
سهلأنشئ دالة باسم compareStrings تأخذ سلسلتين نصيتين كمدخلات وتجري المقارنات التالية:
- تتحقق مما إذا كانت السلسلتان متساويتين باستخدام
equalsوتطبع النتيجة. - تتحقق مما إذا كانت السلسلتان متساويتين (مع تجاهل حالة الأحرف) باستخدام
equalsIgnoreCaseوتطبع النتيجة. - تقارن بين السلسلتين باستخدام
compareToوتطبع النتيجة. - تقارن بين السلسلتين (مع تجاهل حالة الأحرف) باستخدام
compareToIgnoreCaseوتطبع النتيجة.
مثال على المخرجات للسلسلتين المدخلتين HELLO و hello:
HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0ورقة مرجعية
في لغة Java، استخدم طرقًا (methods) محددة لمقارنة السلاسل النصية، وليس معامل == الذي يقارن عناوين الذاكرة:
equals(Object other): مقارنة التساوي مع مراعاة حالة الأحرفequalsIgnoreCase(String other): مقارنة التساوي دون مراعاة حالة الأحرفcompareTo(String other): مقارنة معجمية مع مراعاة حالة الأحرف (تعيد 0 إذا كانت متساوية، وقيمة سالبة إذا كانت الأولى < الثانية، وقيمة موجبة إذا كانت الأولى > الثانية)compareToIgnoreCase(String other): مقارنة معجمية دون مراعاة حالة الأحرف
String str1 = "hello";
String str2 = "HELLO";
boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true
int cmp1 = str1.compareTo(str2); // قيمة موجبة
int cmp2 = str1.compareToIgnoreCase(str2); // 0جرّب بنفسك
import java.util.Scanner;
public class Main {
public static void compareStrings(String str1, String str2) {
// اكتب الكود الخاص بك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
compareStrings(str1, str2);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
دوال System.outتنسيق المخرجاتكلاس Scannerمراجعة - حتى 120مراجعة - صح أم خطأ10الأساليب (الدوال)
تعريف الأساليبمعاملات الأساليبأنواع الإرجاعالتحميل الزائد للأساليب (Method Overloading)مراجعة - دالة Sigmaمراجعة - دالة التحقق (Validation)أساليب Void13عمليات السلاسل النصية
دوال السلاسل النصية - الجزء الأولدوال السلاسل النصية - الجزء الثانيتنسيق السلاسل النصيةمقارنة السلاسل النصية5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع3المتغيرات - الجزء الثاني
الثوابتقواعد التسميةمراجعة - تهيئة المتغيراتتحويل الأنواع - الجزء الأولتحويل الأنواع - الجزء الثاني6اتخاذ القرار
جملة Ifجملة If - Elseجملة Switchالمعامل الثلاثيمراجعة - If Elseجملة If - Else المتداخلة