غالبًا ما تبدأ الطرق التي تُرجع قيمة منطقية بالكلمة "is" وتعني التحقق مما إذا كان العنصر الذي يتم التحقق منه يطابق شرطًا معينًا. تحدد الطريقة Character.isDigit () ، التي سنناقشها في هذه المقالة، ما إذا كانت قيمة char المحددة عبارة عن رقم.
جافا هي بناء جملة طريقة Digit
java.lang.Character.isDigit(char ch) هي طريقة مضمنة في Java تحدد ما إذا كان الحرف المحدد رقمًا أم لا. ماذا يعني "الرقم" في سياق برمجة Java؟ وفقًا للتعريف الموجود في Java Doc، إذا قامت طريقة Character.getType(ch) بإرجاع ثابت DECIMAL_DIGIT_NUMBER ، فإن الحرف عبارة عن رقم. بعض نطاقات أحرف Unicode التي تحتوي على أرقام هي التالية:-
من "\u0030" إلى "\u0039" توجد أرقام ISO-LATIN-1 (من "0" إلى "9")
-
من '\u0660' إلى '\u0669' هي أرقام عربية هندية
-
من '\u06F0' إلى '\u06F9' توجد أرقام عربية هندية ممتدة
-
من "\u0966" إلى "\u096F" توجد أرقام ديفاناغاري
-
من \uFF10' إلى '\uFF19' هي أرقام كاملة العرض
public static boolean isDigit(char myChar)
حيث myChar هي الشخصية المراد اختبارها. تُرجع هذه الطريقة صحيحًا إذا كان الحرف رقمًا وخطأً إذا كان خلاف ذلك. وفقًا لطريقة Java doc isDigit(char myChar) لا يمكنها التعامل مع الأحرف التكميلية. لدعم كافة أحرف Unicode، بما في ذلك الأحرف التكميلية، يجب على المبرمج استخدام الأسلوب isDigit(int) . يبدو الأمر بنفس الطريقة، ولكن بفضل OOP ودعم تعدد الأشكال يعمل بشكل مختلف قليلاً. يحدد isDigit(int codePoint) المنطقي العام ما إذا كان الحرف المحدد (نقطة رمز Unicode) عبارة عن رقم. في مصطلحات ترميز الأحرف، نقطة الرمز أو موضع الرمز هي قيمة رقمية تتوافق مع حرف معين. يُرجع isDigit(int codePoint) أيضًا صحيحًا إذا كان الحرف رقمًا وخطأ بخلاف ذلك.
طريقة Java isDigit مثال بسيط
دعونا نحاول العمل باستخدام طريقة Java Characher.isDigit() . أولا سنقوم بكتابة برنامج بسيط لتوضيح الطريقة.public class isDigitTest {
//isDigit(char ch) simple example
public static void main(String[] args)
{
//characters to check using isDigit Java method
char myChar1 = '5', myChar2 = 'u', myChar3 = '0';
// Function to check if the character
// is digit or not, using isDigit() method
System.out.println("is char " + myChar1 + " a digit? "
+ Character.isDigit(myChar1));
System.out.println(
"is char " + myChar2 + " a digit? "
+ Character.isDigit(myChar2));
System.out.println(
"is char " + myChar3 + " a digit? "
+ Character.isDigit(myChar3));
}
}
الإخراج هو:
هل شار 5 رقم؟ صحيح هو شار UA رقم؟ خطأ هو شار UA رقم؟ حقيقي
طريقة Java isDigit، مثال أكثر تعقيدًا بعض الشيء
دعونا نحاول استخدام Character.isDigit() في مشكلة حياتية أكثر إثارة للاهتمام وواقعية. هناك طريقة ضغط تسمى Run Length Encoding أو RLE للاختصار. تشغيل طول الترميز هو خوارزمية ضغط البيانات التي تستبدل الأحرف المتكررة (السلسلة) بحرف واحد وعدد مرات التكرار الخاصة به. السلسلة عبارة عن تسلسل يتكون من عدة أحرف متطابقة. عند التشفير (التعبئة، الضغط)، يتم استبدال سلسلة من الأحرف المتطابقة التي تشكل سلسلة بسلسلة تحتوي على الحرف المكرر نفسه وعدد تكراراته. لذلك، إذا كان لديك سلسلة ترميز طول التشغيل "hhhhorrribleeee"، فسيعطي النتيجة: h5or3ible5. إذا قمت بفك تشفير السلسلة، فيجب عليك التحقق بشكل تسلسلي مما إذا كان لديك حرف رقم أو غير رقم، وإذا كان لديك رقم، فقد حان الوقت لمعرفة ما هو الرقم. بالمناسبة، جميعكم يعرف ملفات JPEG. يستخدم هذا التنسيق متغيرًا من ترميز طول التشغيل بنمط قطري على البيانات الكمية. البديل هو أنه يتم تشفير طول فترات القيم الصفرية فقط ويتم تشفير جميع القيم الأخرى على أنها نفسها. في المثال أدناه، نستخدم طريقة Character.isDigit(char ch) لفك تشفير سلسلة مشفرة باستخدام تشفير Run-length. إذا كنت مهتمًا، فحاول إكمال البرنامج، أو بالأحرى، قم بإنشاء الجزء الأول منه واكتب طريقة لترميز سلسلة RLE، بالإضافة إلى قراءة سلسلة من ملف. أو إدخال سلسلة يدويًا من وحدة التحكم أثناء التحقق من صحة الإدخال. فيما يلي مثال على فك تشفير RLE:public class RleTest {
//the method to decode String using run-length encoding and
//isDigit() method
private static String decodeRle(String encoded) {
if (encoded.isBlank()) return "";
StringBuilder result = new StringBuilder();
int count = 0;
char baseChar = encoded.charAt(0);
for (int i = 1; i <= encoded.length(); i++) {
char c = i == encoded.length() ? '$' : encoded.charAt(i);
//checking using isDigit() method
if (Character.isDigit(c)) {
count = count * 10 + Character.digit(c, 10);
} else {
do {
result.append(baseChar);
count--;
} while (count > 0);
count = 0;
baseChar = c;
}
}
return result.toString();
}
public static void main(String[] args) {
//here we are going to decode an RLE-encoded string
System.out.println(decodeRle("C3ecddf8"));
}
}
الإخراج هو:
CCCecddffffffff
ربما لاحظت أننا لا نستخدم String ، بل StringBuilder . لماذا؟ الحقيقة هي أن السلسلة غير قابلة للتغيير، ونقوم بزيادة العداد، وفي كل مرة يتم إنشاء سلسلة جديدة. استخدمنا أيضًا طريقة Character.digit في البرنامج. java.lang.Character.digit() هي طريقة تُرجع القيمة الرقمية للحرف ch في نظام الأرقام المحدد. إذا لم تكن القاعدة في النطاق MIN_RADIX <= base <= MAX_RADIX، أو إذا لم يكن ch رقمًا صالحًا في القاعدة المحددة، فستُرجع الطريقة -1.
GO TO FULL VERSION