Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 문자열 선행 0(Leading Zero) 제거하는 방법

이 글에서는 Java에서 문자열의 선행 0(leading zeros)을 제거하는 방법을 알아봅니다. 숫자 데이터를 문자열 형태로 다루다 보면 앞에 붙은 불필요한 0 때문에 곤란한 경우가 종종 있는데, 간단한 반복문과 replace() 메서드만 있으면 이를 손쉽게 처리할 수 있습니다.

아래는 실제 동작 예시입니다.

입력값

Input string: 00000445566

기대 출력값

Result: 445566

알고리즘

  1. 프로그램을 시작합니다.
  2. 문자열 변수 input_string과 StringBuffer 객체 string_buffer를 선언합니다.
  3. 변수 값을 정의(초기화)합니다.
  4. while 루프로 문자열의 문자를 하나씩 검사하며, '0'으로 된 구간을 ""(빈 문자열)로 대체합니다.
  5. 결과를 출력합니다.
  6. 프로그램을 종료합니다.

예제 1: main 함수에서 모든 로직 처리하기

첫 번째 예제는 모든 연산을 main 함수 안에서 한 번에 처리하는 방식입니다.

import java.util.Arrays;
import java.util.List;
public class RemoveZero {
   public static void main (String[] args) {
      System.out.println("Required packages have been imported");
      String input_string = "00000445566";
      System.out.println("\nThe string is defined as: " +input_string);
      int i = 0;
      while (i < input_string.length() && input_string.charAt(i) == '0')
         i++;
      StringBuffer string_buffer = new StringBuffer(input_string);
      string_buffer.replace(0, i, "");
      input_string = string_buffer.toString();
      System.out.println(input_string);
   }
}

출력 결과

Required packages have been imported

The string is defined as: 00000445566
445566

예제 2: 객체 지향 방식으로 메서드 분리하기

두 번째 예제는 객체 지향 프로그래밍(OOP) 스타일로, 0 제거 로직을 별도의 메서드로 캡슐화했습니다. 이렇게 하면 코드의 재사용성과 가독성이 크게 향상됩니다.

import java.util.Arrays;
import java.util.List;
public class RemoveZero {
   public static String remove_zero(String input_string) {
      int i = 0;
      while (i < input_string.length() && input_string.charAt(i) == '0')
         i++;
      StringBuffer string_buffer = new StringBuffer(input_string);
      string_buffer.replace(0, i, "");
      return string_buffer.toString();
   }
   public static void main (String[] args) {
      System.out.println("Required packages have been imported");
      String input_string = "00000445566";
      System.out.println("\nThe string is defined as: " +input_string);
      input_string = remove_zero(input_string);
      System.out.println(input_string);
   }
}

출력 결과

Required packages have been imported

The string is defined as: 00000445566
445566

참고: 정규식으로 더 간결하게 처리하기

반복문 없이 정규식을 사용하면 단 한 줄로 같은 결과를 얻을 수 있습니다.

String result = input_string.replaceFirst("^0+(?!$)", "");

^0+는 문자열 맨 앞에 연속해서 나오는 0을 찾고, (?!$)는 전체가 0으로만 이루어진 경우 마지막 한 자리는 남겨두도록 하는 조건입니다. 예를 들어 "000"은 빈 문자열이 아니라 "0"으로 유지됩니다.

또한 값이 intlong 범위 안에 들어간다면 Integer.parseInt() 또는 Long.parseLong()으로 변환한 뒤 다시 문자열로 만드는 방법도 활용할 수 있습니다. 상황에 맞는 방식을 선택하면 됩니다.