java.lang.String 클래스는 문자열을 다룰 수 있는 다양한 메서드를 제공합니다. 이러한 메서드를 활용하면 공백 제거(trim), 문자열 연결(concatenation), 형 변환(conversion), 비교(comparison) 등의 작업을 손쉽게 수행할 수 있습니다.
특히 replaceAll() 메서드와 정규식을 함께 사용하면, 주어진 문자열에서 숫자만 간단하게 추출할 수 있습니다. 이 방법은 숫자가 아닌 모든 문자([^0-9])를 빈 문자열("")로 치환하는 원리로 동작합니다.
예제 코드
아래 예제는 사용자로부터 키보드로 문자열을 입력받은 뒤, 그 안에 포함된 숫자만 골라 출력하는 프로그램입니다.
import java.util.Scanner;
public class StringExtractTest {
public static void main(String[] args) {
String input;
String numbers;
Scanner scanner = new Scanner(System.in);
System.out.print("키보드로 숫자가 포함된 문자열을 입력하세요: ");
input = scanner.nextLine();
// 숫자(0~9)가 아닌 모든 문자를 제거
numbers = input.replaceAll("[^0-9]", "");
System.out.println("추출된 숫자: " + numbers);
}
}실행 결과
키보드로 숫자가 포함된 문자열을 입력하세요: Welcome to Tutorials Point 1234567890 추출된 숫자: 1234567890
정규식 설명
[^0-9]: 0부터 9 사이의 숫자를 제외한 모든 문자를 의미합니다.replaceAll("[^0-9]", ""): 숫자가 아닌 모든 문자를 빈 문자열로 대체하여 결과적으로 숫자만 남깁니다.- 소수점이나 음수 기호까지 포함하려면
[^0-9.],[^0-9.-]처럼 패턴을 확장할 수 있습니다.
이처럼 replaceAll() 메서드는 별도의 반복문이나 파싱 로직 없이 한 줄의 코드로 문자열에서 숫자를 추출할 수 있는 가장 간결하고 실용적인 방법입니다.