티스토리 뷰

728x90

숫자로 구성되어있지만 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

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함