문자열(String)에서 숫자(int)만 추출하는 방법 여러가지 방법이 있습니다.
- 정규표현식을 이용하여 숫자 추출
- for문으로 숫자 추출
- Stream을 이용하여 숫자 추출
가장 쉬운 방법은 정규표현식(Regex)를 이용하는 방법입니다. 위에 열거한 방법들을 예제와 함께 알아보겠습니다.
정규표현식으로 Integer 추출
다음 코드는 정규표현식으로 Integer만 추출하는 코드입니다. replaceAll()에 인자로 정규표현식과 변환할 문자열을 전달합니다.
String str = "aaa1234, ^&*2233pp";
String intStr = str.replaceAll("[^0-9]", "");
System.out.println(intStr);
// output: 12342233
"[^0-9]"
는 0~9의 숫자가 아닌 문자열을 의미합니다.
따라서, 숫자가 아닌 문자들을 공백(""
)으로 변경하라는 의미입니다.
다음 코드도 위와 동일한 결과를 출력합니다.
"[^\\d]"
는 "[^0-9]"
의 축약형으로 의미가 동일합니다.
String str = "aaa1234, ^&*2233pp";
String intStr = str.replaceAll("[^\\d]", "");
System.out.println(intStr);
// output: 12342233
이 방법이 가장 코드가 짧으니 이 방법을 사용하는 것이 좋습니다.
정규표현식에 대해서 자세히 알고 싶다면 Java - 정규표현식(regex) 예제를 참고하세요.
for문으로 숫자 추출
다음 코드는 for문으로 Integer만 추출하는 코드입니다.
String str = "aaa1234, ^&*2233pp";
String intStr = "";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (48 <= ch && ch <= 57) {
intStr += ch;
}
}
System.out.println(intStr);
// output: 12342233
48은 ASCII에서 숫자 0을 의미하고, 57은 ASCII에서 숫자 9를 의미합니다. 즉, 문자열에서 0~9 사이의 숫자만 추출하는 코드입니다.
Stream으로 숫자 추출
다음 코드는 Stream으로 숫자를 추출하는 코드입니다. for문과 알고리즘은 동일합니다. 대신 for를 사용하지 않고 Stream을 사용하여 처리하였습니다.
String str = "aaa1234, ^&*2233pp";
IntStream stream = str.chars();
String intStr = stream.filter((ch)-> (48 <= ch && ch <= 57))
.mapToObj(ch -> (char)ch)
.map(Object::toString)
.collect(Collectors.joining());
System.out.println(intStr);
// output: 12342233
참고
Loading script...
Related Posts
- Java - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedWriter로 파일 쓰기
- Java - BufferedReader로 파일 읽기
- Java charAt() 함수 알아보기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기