Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีตรวจสอบว่าตัวอักษรแรกของสตริงเป็นตัวเลขใน Java

วิธีที่ 1: ใช้ Character.isDigit()

เมธอด Character.isDigit(char) ตรวจสอบว่าตัวอักษรเป็นเลข 0-9 หรือไม่ คืนค่า boolean

ขั้นตอน

  1. ดึงตัวอักษรแรก: str.charAt(0) หรือ str.toCharArray()[0]
  2. ส่งให้ 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