التعامل مع الأحرف في جافا | Java characters

مفهوم الأحرف في جافا

أحرف: تعني characters في اللغة الإنجليزية, و نحن عادةً ما نستخدم أنواع البيانات البدائية ( أي الـprimitive ) لتخزين الأحرف.
أي لتعريف متغير بهدف تخزين حرف, نعرفه كـ char أو int إذا كنا سنتعامل مع الملفات.

مثال

// a يحتوي على الحرف ch هنا المتغير
char ch = 'a';

// و الذي يعتبر حرف Ω يحتوي على الرمز unicode هنا المتغير
char unicode = '\u03A9';

// هنا قمنا بتعريف مصفوفة من الأحرف
char[] charArray = { 'a', 'b', 'c', 'd', 'e' }; 
		

أحياناً يضطر المبرمج أن يستخدم الكائن للنوع و ليس الشكل البدائي للنوع.
من أجل ذلك, جافا تقدم لنا الكلاس Character الذي يحتوي على مجموعة من الدوال الجاهزة للتعامل مع الأحرف.

لتخزين حرف ككائن من الكلاس Character, يمكنك إنشاء كائن من الكلاس Character و تمرير الحرف الذي تريد تخزينه فيه في الـ Constructor.

مثال

Character ch = new Character('a'); 
		

ملاحظة

في بعض الحالات يقوم المترجم في جافا بخلق كائن من الكلاس Character عنا. فمثلاً إذا قمنا بتمرير قيمة بدائية نوعها char في دالة تأخذ النوع object كباراميتر, يقوم المترجم في هذه الحالة بشكل تلقائي بتحويل النوع char للنوع Character , هذه الخاصية تسمى auto-boxing و عملية تحويل النوع لنوع بدائي من جديد تسمى unboxing.

مفهوم الـ Escape Sequences

Escape Sequence تعني مجموعة أحرف متتالية, إذا أتت وراء بعضها فإنها تشكل شيء معين.

لخلق Escape Sequence نستخدم الرمز \.
إذاً, أي حرف مسبوق بالرمز \ هو عبارة عن Escape Sequence و يعني شيء معين في جافا.


في هذه اللائحة وضعنا لك جميع الـ Escape Sequences الموجودين في جافا.

Escape Sequence تعريفه
\t يضيف عدة مسافات في مكان وضعها.
\b يزيل الحرف الموجود قبلها.
\n يجعل المحتوى الذي يأتي بعدها ينزل على سطر جديد.
\r يجعل الكود يبدأ في التنفيذ من عندها.
\f يضع فاصل بين المحتوى (أي تقسم المحتوى).
ملاحظة: لن يظهر لك تأثيرها إلا إذا إستخدمتها مع الملفات.
\' لإضافة الرمز ' في مكان وضعها.
\" لإضافة الرمز " في مكان وضعها.
\u يستخدم لإضافة أي حرف أو رمز من خلال الـ unicode الخاص فيه.

هنا وضعنا مثال لكل Escape Sequence موجود في الجدول.

طريقة إستخدام الرمز \t

الرمز \t يضيف عدة مسافات في مكان وضعها.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "1\t 2\t 3\t 4" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        1  2   3   4
      

طريقة إستخدام الرمز \b

الرمز \bيزيل الحرف الموجود قبلها.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "abc\bd" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        abd
      

طريقة إستخدام الرمز \n

الرمز \n يجعل المحتوى الذي يأتي بعدها ينزل على سطر جديد.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "My\nName\nIs\nMhamad" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        My
        Name
        Is
        Mhamad
      

طريقة إستخدام الرمز \r

الرمز \r يجعل الكود يبدأ في التنفيذ من عندها.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "This text will be removed \r from here it will start printing" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        from here it will start printing
      

طريقة إستخدام الرمز \'

الرمز \' لإضافة الرمز ' في مكان وضعها.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "I love \'java\' very much" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        I love 'java' very much
      

طريقة إستخدام الرمز \"

الرمز \" لإضافة الرمز " في مكان وضعها.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "I love \"java\" very much" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        I love "java" very much
      

طريقة إستخدام الرمز \u

الرمز \u يستخدم لإضافة أي حرف أو رمز من خلال الـ unicode الخاص فيه.

مثال

Main.java
        public class Main {

        public static void main(String[] args) {

        System.out.println( "\u0645\u062d\u0645\u062F" );

        }

        }
      

سنحصل على النتيجة التالية عند التشغيل.

        محمد
      

Java دوال الكلاس Character

الكلاس Character هو كلاس جاهز في جافا, يحتوي على دوال للتعامل مع الأحرف, ذكرنا لك بعضها في هذا الجدول.

الدالة مع تعريفها
public static boolean isLetter(char ch) ترجع true إذا كانت القيمة التي مررناها لها مكان الباراميتر ch عبارة عن حرف.
غير ذلك ترجع false.
شاهد المثال »
public static boolean isDigit(char ch) ترجع true إذا كانت القيمة التي مررناها لها مكان الباراميتر ch عبارة عن رقم.
غير ذلك ترجع false.
شاهد المثال »
public static boolean isWhitespace(char ch) ترجع true إذا كانت القيمة التي مررناها لها مكان الباراميتر ch عبارة عن مسافة فارغة.
غير ذلك ترجع false.
شاهد المثال »
public static boolean isUpperCase(char ch) ترجع true إذا كانت القيمة التي مررناها لها مكان الباراميتر ch عبارة عن حرف كبير.
غير ذلك ترجع false.
شاهد المثال »
public static boolean isLowerCase(char ch) ترجع true إذا كانت القيمة التي مررناها لها مكان الباراميتر ch عبارة عن حرف صغير.
غير ذلك ترجع false.
شاهد المثال »
public static char toUpperCase(char ch) نمرر لها مكان الباراميتر الـ ch حرف صغير, فترجع لنا نفس الحرف و لكن كبير.
شاهد المثال »
public static char toLowerCase(char ch) نمرر لها مكان الباراميتر الـ ch حرف كبير, فترجع لنا نفس الحرف و لكن صغير.
شاهد المثال »
public static String toString(char c) تحول قيمة الباراميتر c لقيمة نوعها String و ترجعها.
شاهد المثال »

تعريفها

تستخدم لمعرفة ما إذا كانت قيمة الـ char التي نمررها لها مكان الباراميتر ch عبارة عن حرف أم لا.
ترجع true إذا كانت كذلك. و ترجع false إذا لم تكن كذلك.



بناؤها

                  public static boolean isLetter(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char تمثل الحرف الذي نريد فحصه.



قيمة الإرجاع

ترجع true إذا كانت القيمة التي نمررها لها مكان الباراميتر ch عبارة عن حرف.
و ترجع false إذا لم تكن كذلك.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.isLetter('a') );     // عبارة عن حرف a لأن true سترجع isLetter() هنا الدالة
                    System.out.println( Character.isLetter('#') );     // لأن # ليس حرف false سترجع isLetter() هنا الدالة
                    System.out.println( Character.isLetter('1') );     // لأن 1 ليس حرف false سترجع isLetter() هنا الدالة

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    true
                    false
                    false
                  

تعريفها

تستخدم لمعرفة ما إذا كانت قيمة الـ char التي نمررها لها مكان الباراميتر ch عبارة عن رقم أم لا.
ترجع true إذا كانت كذلك. و ترجع false إذا لم تكن كذلك.



بناؤها

                  public static boolean isDigit(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char تمثل الحرف الذي نريد فحصه.



قيمة الإرجاع

ترجع true إذا كانت القيمة التي نمررها لها مكان الباراميتر ch عبارة عن رقم.
و ترجع false إذا لم تكن كذلك.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.isDigit('a') );     // ليس رقم a لأن false سترجع isDigit() هنا الدالة
                    System.out.println( Character.isDigit('#') );     // لأن # ليس رقم false سترجع isDigit() هنا الدالة
                    System.out.println( Character.isDigit('1') );     // لأن 1 عبارة عن رقم true سترجع isDigit() هنا الدالة

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    false
                    false
                    true
                  

تعريفها

تستخدم لمعرفة ما إذا كانت قيمة الـ char التي نمررها لها مكان الباراميتر ch عبارة عن مسافة فارغة أم لا.
ترجع true إذا كانت كذلك. و ترجع false إذا لم تكن كذلك.


ملاحظة

الأشياء التالية كلها تعتبر مسافات فارغة:

  • المسافة العادية (space).

  • المسافة التي نحصل عليها بالنقر على الزر Tab.

  • الرمز \n الذي يستخدم للنزول على سطر جديد.



بناؤها

                  public static boolean isWhitespace(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char تمثل الحرف الذي نريد فحصه.



قيمة الإرجاع

ترجع true إذا كانت القيمة التي نمررها لها مكان الباراميتر ch عبارة عن رقم.
و ترجع false إذا لم تكن كذلك.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.isWhitespace('a') );    // ليس مسافة فارغة a لأن false سترجع isWhitespace() هنا الدالة
                    System.out.println( Character.isWhitespace('#') );    // لأن # ليس مسافة فارغة false سترجع isWhitespace() هنا الدالة
                    System.out.println( Character.isWhitespace('1') );    // لأن 1 ليس مسافة فارغة false سترجع isWhitespace() هنا الدالة
                    System.out.println( Character.isWhitespace(' ') );    // لأنه يوجد مسافة فارغة true سترجع isWhitespace() هنا الدالة
                    System.out.println( Character.isWhitespace('\t') );   // تعتبر مسافة فارغة \n لأن true سترجع isWhitespace() هنا الدالة
                    System.out.println( Character.isWhitespace('\n') );   // تعتبر مسافة فارغة \n لأن true سترجع isWhitespace() هنا الدالة

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    false
                    false
                    false
                    true
                    true
                    true
                  

تعريفها

تستخدم لمعرفة ما إذا كانت قيمة الـ char التي نمررها لها مكان الباراميتر ch عبارة عن حرف كبير أم لا.
ترجع true إذا كانت كذلك. و ترجع false إذا لم تكن كذلك.



بناؤها

                  public static boolean isUpperCase(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char تمثل الحرف الذي نريد فحصه.



قيمة الإرجاع

ترجع true إذا كانت القيمة التي نمررها لها مكان الباراميتر ch عبارة عن حرف كبير.
و ترجع false إذا لم تكن كذلك.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.isUpperCase('a') );
                    System.out.println( Character.isUpperCase('A') );   // عبارة عن حرف كبير A لأن true القيمة isUpperCase() هنا فقط سترجع الدالة
                    System.out.println( Character.isUpperCase('#') );
                    System.out.println( Character.isUpperCase('1') );
                    System.out.println( Character.isUpperCase('\n') );
                    System.out.println( Character.isUpperCase(' ') );

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    false
                    true
                    false
                    false
                    false
                    false
                  

تعريفها

تستخدم لمعرفة ما إذا كانت قيمة الـ char التي نمررها لها مكان الباراميتر ch عبارة عن حرف صغير أم لا.
ترجع true إذا كانت كذلك. و ترجع false إذا لم تكن كذلك.



بناؤها

                  public static boolean isLowerCase(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char تمثل الحرف الذي نريد فحصه.



قيمة الإرجاع

ترجع true إذا كانت القيمة التي نمررها لها مكان الباراميتر ch عبارة عن حرف صغير.
و ترجع false إذا لم تكن كذلك.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.isLowerCase('a') );   // عبارة عن حرف صغير a لأن true القيمة isLowerCase() هنا فقط سترجع الدالة
                    System.out.println( Character.isLowerCase('A') );
                    System.out.println( Character.isLowerCase('#') );
                    System.out.println( Character.isLowerCase('1') );
                    System.out.println( Character.isLowerCase('\n') );
                    System.out.println( Character.isLowerCase(' ') );

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    true
                    false
                    false
                    false
                    false
                    false
                  

تعريفها

نمرر لها مكان الباراميتر الـ ch حرف صغير, فترجع لنا نفس الحرف و لكن كبير.



بناؤها

                  public static char toUpperCase(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char.



قيمة الإرجاع

إذا قمنا بتمرير حرف صيغر لها مكان الباراميتر ch. ترجع لنا نفس الحرف و لكن كبير.
ملاحظة: إذا كانت قيمة الباراميتر ch لا تعتبر من الأحرف ( مثل $ ) فإنها ترجعها كما هي.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.toUpperCase('a') );

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    A
                  

تعريفها

نمرر لها مكان الباراميتر الـ ch حرف كبير, فترجع لنا نفس الحرف و لكن صغير.



بناؤها

                  public static char toLowerCase(char ch)
                


باراميترات

  • مكان الباراميتر ch نمرر قيمة نوعها char.



قيمة الإرجاع

إذا قمنا بتمرير حرف كبير لها مكان الباراميتر ch. ترجع لنا نفس الحرف و لكن صغير.
ملاحظة: إذا كانت قيمة الباراميتر ch لا تعتبر من الأحرف ( مثل $ ) فإنها ترجعها كما هي.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.toLowerCase('A') );

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    a
                  

تعريفها

نمرر لها مكان الباراميتر الـ c فترجع نفس القيمة و لكن كـ String.
الأمر الذي سيسمح لنا بمعاملة الحرف كنص و الإستفادة من دوال الكلاس String.



بناؤها

                  public static String toString(char ch)
                


باراميترات

  • مكان الباراميتر c نمرر قيمة نوعها char.



قيمة الإرجاع

ترجع القيمة التي نمررها مكان الباراميتر c كـ String.



مثال

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    System.out.println( Character.toString('1') );
                    System.out.println( Character.toString('a') );
                    System.out.println( Character.toString('A') );

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    1
                    a
                    A