티스토리 뷰
숫자로 구성되어있지만 int 타입이 아니고, 문자열 타입인 경우가 있습니다. 예를 들면, 아래 변수 n은 123 값을 갖고 있지만 문자열로 되어있습니다. n2의 경우 "000123"이며, 사실 int 타입으로 보면 "123"과 동일합니다. 하지만 문자열이기 때문에 출력할 때 앞에 0이 포함되어 출력됩니다. 이럴 때 0을 제거하려면 어떻게 해야할까요?
String n = "123";
String n2 = "000123";
Integer.parseInt()로 앞자리 0 제거
Integer.parseInt(string)은 string을 숫자로 변경합니다. 주의할 점은 숫자로 변경할 수 없는 문자열을 입력하면 NumberFormatException가 발생합니다. 따라서, 숫자가 아닌 문자열이 입력될 수 있다면 try-catch 구문을 사용하여 예외처리를 해야 합니다.
아래 예제와 같이 문자열 "0000112233"을 parseInt()로 앞의 0이 제거된 int 타입의 변수로 변환할 수 있습니다. 만약 int 타입이 아닌 문자열 타입으로 변환하고 싶을 때는, Integer.toString(integer)를 사용하여 변환할 수 있습니다.
String num = "0000112233";
int integer = Integer.parseInt(num);
String string = Integer.toString(integer);
System.out.println("int: " + integer);
System.out.println("str: " + string);
실행 결과:
int: 112233
str: 112233
아래 코드는 NumberFormatException을 예외 처리하는 예제입니다. 문자열을 숫자로 변경할 수 없어 예외가 발생했을 때, 기본 값을 0으로 변경하는 등의 처리를 할 수 있습니다.
String num = "0000112233a";
int integer = -1;
try {
Integer.parseInt(num);
} catch (NumberFormatException e) {
integer = 0;
}
System.out.println("int: " + integer);
실행 결과:
int: 0
정규표현식으로 앞자리 0 제거
정규표현식으로 앞자리 0을 찾고, 0을 제거할 수 있습니다. replaceFirst(pattern, repl)은 문자열에서 pattern에 해당하는 것을 찾고 repl로 변경합니다. pattern에 대한 문자열이 여러개이면 가장 먼저 찾은 것 1개만 repl로 변경합니다. 그렇기 때문에 함수 이름에 First가 있습니다.
앞자리 0을 찾는 패턴은 "^0+" 인데, "^"는 문자열 시작을 의미하고 "0+"는 0이 1개 이상인 패턴을 의미합니다. 따라서, 이 패턴으로 앞자리의 모든 0을 찾고, 그 문자열을 빈 문자열("")으로 변경하여 제거합니다.
String num = "0000112233";
String string = num.replaceFirst("^0+", "");
int integer = Integer.parseInt(string);
System.out.println("int: " + integer);
System.out.println("str: " + string);
실행 결과:
int: 112233
str: 112233
'개발 > Java' 카테고리의 다른 글
[Java] 배열 정렬 (오름차순, 내림차순) (1) | 2024.06.30 |
---|---|
[Java] replace() vs replaceAll() 차이점 (0) | 2024.06.30 |
[Java] for문에서 마지막 콤마 제거(출력 안함) (0) | 2023.10.14 |
- Total
- Today
- Yesterday
- DART
- 15e 트램
- 주황버섯
- 진료 병원 찾기
- java
- 모루정원
- 다크스텀프
- javascript
- 리스보아 카드
- aosp 빌드
- 파란버섯
- Flutter
- adb
- 와보땅
- 오블완
- Python
- 포르투갈
- 12e 트램
- 파이썬
- 티스토리챌린지
- 포르투
- 네키
- 메이플랜드
- 와일드보어의 땅
- 나무던전
- 리스본
- android
- Skia
- 원숭이의숲
- 앞자리 0 제거
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |