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