개발시 유용한 문자열(STRING) 처리 함수 1탄
파라미터로 넘어오는 String을 , 를 제거하는 방법
public static String removeComma(String str)
{
String rtnValue = str;
if(isNull(str))
{
return "";
}
rtnValue = replace(rtnValue, ",", "");
return rtnValue;
}
문자열 좌측의 공백을 제거하는 방법
public static String ltrim(String str)
{
int len = str.length();
int idx = 0;
while((idx < len) && (str.charAt(idx) <= ' '))
{
idx++;
}
return str.substring(idx, len);
}
문자열 우측의 공백을 제거하는 방법
public static String rtrim(String str)
{
int len = str.length();
while((0 < len) && (str.charAt(len - 1) <= ' '))
{
len--;
}
return str.substring(0, len);
}
NULL값일 때 “0”리턴하는 방법
public static String nullToZero(String value)
{
if(value == null || value.equals(""))
{
value = "0";
}
return value;
}
돈표기 (3자리 수마다 콤마찍기) 하는 방법
public static String changeMoney(String str)
{
DecimalFormat df = new DecimalFormat("###,###");
return df.format(parseInt(str));
}
숫자 0이 넘어오면 “”로 대치하는 방법
public static String isOneNull(int num)
{
if(num == 0) return "";
else return Integer.toString(num);
}
8859-1를 euc-kr로 인코딩하는 방법 함수
public static String ksc2asc(String str)
{
String result = "";
if(isNull(str))
{
result = "";
}
else
{
try
{
result = new String(str.getBytes("euc-kr"), "8859_1");
}
catch(Exception e)
{
result = "";
}
}
return result;
}
euc-kr을 8859-1로 인코딩하는 함수 방법
public static String asc2ksc(String str)
{
String result = "";
if(isNull(str))
{
result = "";
}
else
{
try
{
result = new String(str.getBytes("8859_1"), "euc-kr");
}
catch(Exception e)
{
result = "";
}
}
return result;
}
Exception을 String으로 반환하는 방법
public static String stackTraceToString(Throwable e)
{
try
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "------rn" + sw.toString() + "------rn";
}
catch(Exception e2)
{
return StringUtil.stackTraceToString2(e);
}
}
public static String stackTraceToString2(Throwable e)
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream p = new PrintStream(b);
e.printStackTrace(p);
p.close();
String stackTrace = b.toString();
try
{
b.close();
}
catch(IOException ex)
{
log.info(ex.toString());
log.info(ex.getMessage());
}
return stackTrace;
}
euc-kr을 euc-kr로 인코딩하는 방법
public static String ksc2utf8(String str)
{
String result = "";
if(isNull(str))
{
result = "";
}else
{
try
{
result = new String(str.getBytes("euc-kr"), "utf-8");
}
catch(Exception e)
{
result = "";
}
}
return result;
}
백분율을 구하는 방법(%는 빼고 값만 리턴)
public static String percentValue(int value, int total)
{
double val = Double.parseDouble(String.valueOf(value)) / Double.parseDouble(String.valueOf(total)) * 100;
DecimalFormat df = new DecimalFormat("##0.0");
return df.format(val);
}
String 앞 또는 뒤를 특정문자로 지정한 길이만큼 채워주는 함수
* String 앞 또는 뒤를 특정문자로 지정한 길이만큼 채워주는 함수
* (예) pad("1234","0", 6, 1) --> "123400" <BR>
* @param src Source string
* @param pad pad string
* @param totLen total length
* @param mode 앞/뒤 구분 (-1:front, 1:back)
public static String pad(String src, String pad, int totLen, int mode)
{
if(src == null) return "";
String paddedString = "";
int srcLen = src.length();
if((totLen < 1) || (srcLen >= totLen)) return src;
for(int i = 0; i < (totLen - srcLen); i++)
{
paddedString += pad;
}
if (mode == -1) paddedString += src; // front padding
else paddedString = src + paddedString; // back padding
return paddedString;
}
주어진 길이(iLength)만큼 주어진 문자(cPadder)를 strSource의 왼쪽에 붙혀서 보내는 방법
* 주어진 길이(iLength)만큼 주어진 문자(cPadder)를 strSource의 왼쪽에 붙혀서 보내준다. ex)
* lpad("abc", 5, '^') ==> "^^abc" lpad("abcdefghi", 5, '^') ==> "abcde"
* lpad(null, 5, '^') ==> "^^^^^"
public static String lpad(String strSource, int iLength, char cPadder)
{
StringBuilder sbBuffer = null;
String strReturn = "";
if(!strSource.isEmpty())
{
int iByteSize = getByteSize(strSource);
if(iByteSize > iLength)
{
strReturn = strSource.substring(0, iLength);
}
else if(iByteSize == iLength)
{
strReturn = strSource;
}
else
{
int iPadLength = iLength - iByteSize;
sbBuffer = new StringBuilder();
for(int j = 0; j < iPadLength; j++)
{
sbBuffer.append(cPadder);
}
sbBuffer.append(strSource);
strReturn = sbBuffer.toString();
}
return strReturn;
}
else
{
sbBuffer = new StringBuilder();
for(int j = 0; j < iLength; j++)
{
sbBuffer.append(cPadder);
}
strReturn = sbBuffer.toString();
}
return strReturn;
}
주어진 길이(iLength)만큼 주어진 문자(cPadder)를 strSource의 오른쪽에 붙혀서 보내는 방법
* 주어진 길이(iLength)만큼 주어진 문자(cPadder)를 strSource의 오른쪽에 붙혀서 보내준다.
* ex)
* lpad("abc", 5, '^') ==> "abc^^" lpad("abcdefghi", 5, '^') ==> "abcde"
* lpad(null, 5, '^') ==> "^^^^^"
public static String rpad(String strSource, int iLength, char cPadder)
{
StringBuilder sbBuffer = null;
String strReturn = "";
if(!strSource.isEmpty())
{
int iByteSize = getByteSize(strSource);
if(iByteSize > iLength)
{
strReturn = strSource.substring(0, iLength);
}
else if(iByteSize == iLength)
{
strReturn = strSource;
}
else
{
int iPadLength = iLength - iByteSize;
sbBuffer = new StringBuilder(strSource);
for(int j = 0; j < iPadLength; j++)
{
sbBuffer.append(cPadder);
}
strReturn = sbBuffer.toString();
}
}
else
{
sbBuffer = new StringBuilder();
for(int j = 0; j < iLength; j++)
{
sbBuffer.append(cPadder);
}
strReturn = sbBuffer.toString();
}
return strReturn;
}
total과 success 로 % 구하고 소수점 1자리까지 계산하는 방법
public static String calculatePercent(int success, int total)
{
String result = "0";
if(total == 0)
{
}
else
{
Double tempSuccess = new Double(success + ".0");
Double tempTotal = new Double(total + ".0");
Double tempPercent = new Double(100 + ".0");
double cal = tempSuccess.doubleValue() * tempPercent.doubleValue() / tempTotal.doubleValue();
result = new java.text.DecimalFormat("#.#").format(cal);
}
return result;
}
특정문자를 HTML TAG형식으로 변경하는 메소드
/* 특정문자를 HTML TAG형식으로 변경하는 메소드.
* <xmp> & --> & < --> < > --> > " --> " ' --> '
* -----------------------------------------------------------------
* <option type=radio name=r value="xxxxxxxx"> yyyyyyy
* <input type=hidden name=h value="xxxxxxxx">
* <input type=text name=t value="xxxxxxxx">
* <textarea name=msg rows=20 cols=53>xxxxxxx</textarea> - 위와 같은 HTML 소스를
* 생성할 때, xxxxxxx 부분의 문자열 중에서 아래에 있는 몇가지 특별한 문자들을 변환하여야 합니다. 만약 JSP 라면 미리
* 변환하여 HTML 전체 TAG를 만들거나, 혹은 아래처럼 사용하세요. -
* <option type=radio name=r value="<%= StringUtil.translate(s) %>"> yyyyyyy
* <input type=hidden name=n value="<%= StringUtil.translate(s) %>">
* <input type=text name=n value="<%= StringUtil.translate(s) %>">
* <textarea name=body rows=20 cols=53><%= StringUtil.translate(s)
* %></textarea> - 또 필요하다면 yyyyyyy 부분도 translate(s)를 할 필요가 있을 겁니다. 필요할 때 마다
* 사용하세요. - </xmp>
**/
public static String translate(String str)
{
if(str == null) return "";
StringBuilder buf = new StringBuilder();
char[] c = str.toCharArray();
int len = c.length;
for(int i = 0; i < len; i++)
{
if(c[i] == '&') buf.append("&");
else if(c[i] == '<') buf.append("<");
else if(c[i] == '>') buf.append(">");
else if(c[i] == '"') buf.append("""); // (char)34
else if(c[i] == ''') buf.append("'"); // (char)39
else buf.append(c[i]);
}
return buf.toString();
}
위에서 정의한 메소드(함수)들이 사용하는 IMPORT 라이브러리 정보이니 참고하세요.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;