Java

개발시 유용한 문자열(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> & --> &amp; < --> &lt; > --> &gt; " --> &quot; ' --> &#039;
 * -----------------------------------------------------------------
 * <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("&amp;");
		else if(c[i] == '<')	buf.append("&lt;");
		else if(c[i] == '>')	buf.append("&gt;");
		else if(c[i] == '"')	buf.append("&quot;"); // (char)34
		else if(c[i] == ''')	buf.append("&#039;"); // (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;

 

 

Leave a Reply

error: Content is protected !!