isDigit() 메서드 사용하기
java.lang.Character 클래스의 isDigit() 메서드는 문자 하나를 매개변수로 받아 해당 문자가 숫자인지 판별합니다. 주어진 문자가 숫자이면 true를, 그렇지 않으면 false를 반환합니다.
따라서 주어진 문자열의 첫 번째 문자가 숫자인지 확인하려면 다음 단계를 따르면 됩니다.
String 클래스의 charAt() 메서드는 인덱스를 나타내는 정수 값을 매개변수로 받아 해당 위치의 문자를 반환합니다.
String 클래스의 toCharArray() 메서드는 문자열을 문자 배열로 변환해 반환하므로, array[0]처럼 접근하여 첫 번째 문자를 얻을 수 있습니다.
위 두 메서드 중 하나를 사용해 해당 문자열의 첫 번째 문자를 가져옵니다.
가져온 문자를 isDigit() 메서드의 매개변수로 전달해 숫자인지 여부를 확인합니다.
참고로 str.charAt(0)을 사용하면 문자 배열로 변환하는 과정 없이도 한 줄로 간단하게 처리할 수 있습니다.
예제
import java.util.Scanner;
public class FirstCharacterOfString {
public static void main(String args[]) {
// 사용자로부터 문자열 입력받기
System.out.println("문자열을 입력하세요");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 문자열을 문자 배열로 변환
char charArray[] = str.toCharArray();
boolean bool = Character.isDigit(charArray[0]);
if(bool) {
System.out.println("첫 번째 문자는 숫자입니다");
} else {
System.out.println("첫 번째 문자는 숫자가 아닙니다");
}
}
}
실행 결과 1
문자열을 입력하세요 krishna 첫 번째 문자는 숫자가 아닙니다
실행 결과 2
문자열을 입력하세요 2sample 첫 번째 문자는 숫자입니다
정규 표현식 사용하기
String 클래스의 matches() 메서드는 정규 표현식을 매개변수로 받아 현재 문자열과 일치하는지 검사합니다. 일치하면 true를, 그렇지 않으면 false를 반환합니다.
첫 번째 문자가 숫자인 문자열과 일치하는 정규 표현식은 "^[0-9].*$"입니다. 이 정규 표현식을 matches() 메서드의 매개변수로 전달하면 됩니다.
^ : 문자열의 시작을 의미합니다.
[0-9] : 0부터 9 사이의 숫자 하나와 일치합니다.
.*$ : 그 뒤에 임의의 문자가 0개 이상 이어진 뒤 문자열이 끝남을 의미합니다.
예제
import java.util.Scanner;
public class FirstCharacterOfString {
public static void main(String args[]) {
// 사용자로부터 문자열 입력받기
System.out.println("문자열을 입력하세요");
Scanner sc = new Scanner(System.in);
String str = sc.next();
boolean bool = str.matches("^[0-9].*$");
if(bool) {
System.out.println("첫 번째 문자는 숫자입니다");
} else {
System.out.println("첫 번째 문자는 숫자가 아닙니다");
}
}
}
실행 결과 1
문자열을 입력하세요 krishna 첫 번째 문자는 숫자가 아닙니다
실행 결과 2
문자열을 입력하세요 2sample 첫 번째 문자는 숫자입니다
두 방법 모두 동일한 결과를 얻을 수 있습니다. 단순히 첫 문자만 빠르게 확인할 때는 isDigit() 메서드가 더 직관적이고 성능 면에서 유리하며, 숫자로 시작하는지 여부뿐 아니라 더 복잡한 패턴까지 함께 검증해야 할 때는 정규 표현식이 유용합니다.