본문으로 건너뛰기

Java 문자열에서 숫자 추출

String.replaceAll()과 정규표현식을 이용하여 문자열에서 숫자 추출하는 방법입니다.

1. 정규표현식으로 숫자만 추출

String.replaceAll(pattern, replacement)는 문자열에서 pattern에 해당하는 문자들을 replacement로 교체합니다.

따라서, 패턴으로 숫자가 아닌 문자를 찾고 빈 문자열("")으로 변환하면 문자열에 숫자만 남게 됩니다.

아래 예제의 pattern [^0-9]는 0에서 9사이의 숫자가 아닌 문자를 의미합니다.

public class Example {
public static void main(String[] args) {

String str = "a1b2c3 pp45$6#789";

String result = str.replaceAll("[^0-9]","");
System.out.println(result);
}
}

Output:

123456789

[0-9]는 0에서 9 사이의 숫자를 의미하며, ^는 NOT을 의미합니다. 따라서 [^0-9]는 0~9 사이의 숫자가 아닌 문자를 의미합니다.

2. 다른 정규표현식 패턴

패턴 \\D는 숫자가 아닌 문자를 의미합니다.

아래와 같이 숫자를 제외한 문자를 제거할 수 있습니다.

String str = "a1b2c3 pp45$6#789";
String result = str.replaceAll("[\\D]","");
System.out.println(result);

3. 다른 정규표현식 패턴

패턴 \\d는 숫자를 의미하며, ^는 NOT을 의미합니다.

즉, ^\\d는 숫자가 아닌 문자를 의미하며, 아래와 같이 숫자만 추출할 수 있습니다.

String str = "a1b2c3 pp45$6#789";
String result = str.replaceAll("[^\\d]","");
System.out.println(result);

4. 숫자 문자열을 Integer / Long으로 변환

숫자만 있는 문자열을 Integer.parseInt(), Long.parseLong()으로 Integer/Long 타입으로 변경할 수 있습니다.

public class Example {
public static void main(String[] args) {

String str = "0a1b2c3 pp45$6#789";

String result = str.replaceAll("[^\\d]","");
System.out.println(result);

int n1 = Integer.parseInt(result);
long n2 = Long.parseLong(result);
System.out.println(n1);
System.out.println(n2);
}
}

Output:

0123456789
123456789
123456789