เมธอดที่ส่งคืนค่าบูลีนส่วนใหญ่มักขึ้นต้นด้วยคำว่า “คือ” และหมายถึงการตรวจสอบว่าองค์ประกอบที่กำลังตรวจสอบตรงกับเงื่อนไขที่กำหนดหรือไม่ เมธอดCharacter.isDigit()ที่เราจะพูดถึงในบทความนี้ กำหนดว่าค่าถ่านที่ระบุเป็นตัวเลขหรือไม่
ไวยากรณ์เมธอด Java isDigit
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 และการสนับสนุน polymorphism ทำงานแตกต่างกันเล็กน้อย บูลีนสาธารณะแบบคงที่ 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 Run Length Encoding เป็นอัลกอริธึมการบีบอัดข้อมูลที่แทนที่อักขระซ้ำ (ชุด) ด้วยอักขระหนึ่งตัวและจำนวนการทำซ้ำ ซีรีส์คือลำดับที่ประกอบด้วยอักขระที่เหมือนกันหลายตัว เมื่อเข้ารหัส (การบรรจุ การบีบอัด) สตริงของอักขระที่เหมือนกันซึ่งประกอบกันเป็นชุดจะถูกแทนที่ด้วยสตริงที่มีอักขระที่ซ้ำกันและจำนวนของการทำซ้ำ ดังนั้นหากคุณมีการเข้ารหัสความยาวของการเรียกใช้สตริง "hhhhhorrribleeee" จะให้ผลลัพธ์: 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"));
}
}
ผลลัพธ์คือ:
CCCeddffffffff
คุณ อาจ สังเกตว่าเราไม่ได้ใช้Stringแต่ใช้StringBuilder ทำไม ความจริงก็คือStringนั้นเปลี่ยนรูปไม่ได้ และเราจะเพิ่มตัวนับ และแต่ละครั้งจะมีการสร้างสตริงใหม่ เรายังใช้ วิธี Character.digitในโปรแกรม java.lang.Character.digit()เป็นเมธอดที่คืนค่าตัวเลขของอักขระchในระบบตัวเลขที่ระบุ หากฐานไม่อยู่ในช่วง MIN_RADIX <= ฐาน <= MAX_RADIX หรือถ้าchไม่ใช่ตัวเลขที่ถูกต้องในฐานที่ระบุ วิธีการจะส่งกลับ -1
GO TO FULL VERSION