Java LPAD, RPAD로 성형. 문자열의 왼쪽과 오른쪽에 지정된 문자 채우기
Java그래서 문자열에 대한 SQL 함수LPAD,,,RPAD와 같은 처리를 실시하는 샘플 소스를 소개합니다.
이들은고정 길이 형식다룰 때 매우 편리합니다.
- LPAD··· 전체의 문자수가 지정의 자리수가 되도록(듯이) 캐릭터 라인의 좌측에 반복 캐릭터 라인을 메우고 돌려줍니다.
- RPAD··· 전체의 문자수가 지정의 자리수가 되도록(듯이) 캐릭터 라인의 우측에 반복 캐릭터 라인을 메우고 돌려줍니다.
샘플 프로그램
/**
*RPAD를 수행합니다.
* 문자열 [str]의 오른쪽에 지정된 문자열 [addStr]을 [len]로
* 만족할 때까지 삽입합니다.
* @param str 대상 문자열
* @param len 보충할 때까지의 자릿수(RPAD를 한 후의 사이즈를 지정합니다.)
* @param addStr 삽입 할 문자열
* @return 변환 후 문자열.
*/
public static String rpad (String str, int len, String addStr) {
return fillString(str, “R”, len, addStr);
}
/**
* 문자열 [str]에 대해 보충 할 문자열 [addStr]
* [position]의 위치에 [len]이 충족될 때까지 삽입합니다.
*
* ※ [str]이 null이나 빈 리터럴 인 경우에도 [addStr]
* [len]이 충족될 때까지 삽입한 결과를 반환합니다.
* @param str 대상 문자열
* @param position 앞에 삽입 ⇒ L or l 뒤에 삽입 ⇒ R or r
* @param len 보충하기 전의 자릿수
* @param addStr 삽입 할 문자열
* @return 변환 후 문자열.
*/
public static String fillString(String str, String position,
int len,
String addStr) {
if (addStr == null || addStr.length() == 0) {
throw new IllegalArgumentException
(“삽입할 문자열 값이 잘못되었습니다. addStr=”+addStr);
}
if (str == null) {
str = “”;
}
StringBuffer buffer = new StringBuffer(str);
while (len > buffer.length()) {
if (position.equalsIgnoreCase("l")) {
int sum = buffer.length() + addStr.length();
if (sum > len) {
addStr = addStr.substring
(0,addStr.length() – (sum – len));
buffer.insert(0, addStr);
}else{
buffer.insert(0, addStr);
}
} else {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
return buffer.toString();
}
return buffer.toString().substring(0, len);
}
실행 결과
◆실행예
public static void main (String [] args) { // lpad의 경우. 5자리가 될 때까지 왼쪽에 공백을 채웁니다. String ret = lpad("abc", 5 , " "); System.out.println("'" + ret + "'"); // rpad의 경우. 다섯 자리가 될 때까지 오른쪽으로 공백을 채웁니다. ret = rpad("abc", 5 , " "); System.out.println("'" + ret + "'"); // null의 경우 ret = rpad(null, 5 , " "); System. out.println("'" + ret + "'"); }
◆출력 결과
'abc' 'abc' ''