วิธีที่ 1: ใช้ Character.isDigit()
เมธอด Character.isDigit(char) ตรวจสอบว่าตัวอักษรเป็นเลข 0-9 หรือไม่ คืนค่า boolean
ขั้นตอน
- ดึงตัวอักษรแรก:
str.charAt(0)หรือstr.toCharArray()[0] - ส่งให้
Character.isDigit()
ตัวอย่าง
import java.util.Scanner;
public class FirstCharIsDigit {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String: ");
String str = sc.next();
if (str.isEmpty()) {
System.out.println("String is empty");
return;
}
char firstChar = str.charAt(0);
boolean isDigit = Character.isDigit(firstChar);
if (isDigit) {
System.out.println("First character is a digit");
} else {
System.out.println("First character is not a digit");
}
}
}
ผลลัพธ์
Enter a String: krishna
First character is not a digit
Enter a String: 2sample
First character is a digit
วิธีที่ 2: ใช้ Regular Expression matches()
Regex ^[0-9].*$ หมายถึง: เริ่มต้น (^) เป็นตัวเลข 0-9 ตามด้วยอะไรก็ได้ (.*), จบ ($)
ตัวอย่าง
import java.util.Scanner;
public class FirstCharIsDigitRegex {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String: ");
String str = sc.next();
boolean isDigit = str.matches("^[0-9].*$");
if (isDigit) {
System.out.println("First character is a digit");
} else {
System.out.println("First character is not a digit");
}
}
}
ผลลัพธ์
Enter a String: krishna
First character is not a digit
Enter a String: 2sample
First character is a digit
วิธีที่ 3: ใช้ Character.getType() (Unicode Category)
char ch = str.charAt(0);
boolean isDigit = Character.getType(ch) == Character.DECIMAL_DIGIT_NUMBER;
// รองรับตัวเลข Unicode ทุกภาษา (ไทย, อาหรับ, ฯลฯ)
การเปรียบเทียบ
| วิธี | ข้อดี | ข้อเสีย | รองรับ Unicode Digit |
|---|---|---|---|
| Character.isDigit() | เร็ว มาตรฐาน อ่านง่าย | ASCII digit เท่านั้น (0-9) | บางรุ่นรองรับบางตัว |
| str.matches("^[0-9].*$") | ยืดหยุ่น (เปลี่ยน pattern ได้) | ช้ากว่า (compile regex ทุกครั้ง) | ไม่ (แค่ 0-9) |
| Character.getType() | รองรับ Unicode ทุกภาษา | โค้ดยาวกว่า | ✓ ทุกภาษา |
ข้อควรระวัง
- เช็ค
str.isEmpty()ก่อน เพื่อหลีกเลี่ยงStringIndexOutOfBoundsException isDigit() true สำหรับ '٠' (Arabic-Indic), '०' (Devanagari) ใน Java บาง version- Regex ใช้
^\\dแทน^[0-9]ได้ (\d = digit ใน regex) - Pre-compile Pattern หากเช็คหลายครั้ง:
Pattern.compile("^\\d").matcher(str).find()
สรุป
แนะนำ: !str.isEmpty() && Character.isDigit(str.charAt(0)) - เร็ว สั้น มาตรฐาน
Unicode: Character.getType(ch) == Character.DECIMAL_DIGIT_NUMBER