본문 바로가기
IT/Java

[Java] - 자바 String 문자열 특정 자릿수 만큼 숫자 앞에 0으로 채우는 방법

by 차이나는 개발자 2021. 9. 28.
728x90
반응형

#자바 String 문자열 특정 자릿수 만큼 숫자 앞에 0으로 채우는 방법

 

 

#자바 String 문자열 특정 자릿수 만큼 숫자 앞에 0으로 채우는 메서드

-원하는 길이만큼 숫자앞에 '0'을 채워준다.

-param : int 길이,  long 숫자값

-return : 앞에 '0'이 채워진 String

 

-예시

public class test {

	public static String fillZero(int length, long lvalue) {
		String value = "" + lvalue;
		return fillZero(length, value);
	}

	public static String fillZero(int length, String value) {

		if (value == null)
			return "";

		char[] cValue = value.toCharArray();
		for (int i = 0; i < cValue.length; i++) {
			if (!Character.isDigit(cValue[i])) {
				return "";
			}
		}

		String result = value;
		int intLength = getStringLength(result);

		if (intLength == length) {
			return result;
		} else if (intLength > length) {
			return hanSubstr(length, value);
		}

		for (int i = 0; i < length; i++) {
			result = "0" + result;
			i = getStringLength(result) - 1;
		}
		return result;
	}

	public static String hanSubstr(int length, String value) {

		if (value == null || value.length() == 0) {
			return "";
		}

		int szBytes = value.getBytes().length;

		if (szBytes <= length) {
			return value;
		}

		String result = new String(value.getBytes(), 0, length);
		if (result.equals("")) {
			result = new String(value.getBytes(), 0, length - 1);
		}

		return result;
	}

	public static int getStringLength(String str) {
		char ch[] = str.toCharArray();
		int max = ch.length;
		int count = 0;

		for (int i = 0; i < max; i++) {
			// 0x80: 문자일 경우 +2
			if (ch[i] > 0x80)
				count++;
			count++;
		}
		return count;
	}

	public static void main(String[] args) {
		System.out.println(fillZero(10, 1111));
	}
}

 

 

 

728x90
반응형

댓글