개발시 유용한 문자열(STRING) 처리 함수 2탄
자바에서 byte size를 가져오는 방법
public static int getByteSize(String str)
{
if(str.isEmpty()) return 0;
byte[] byteArray = null;
try
{
byteArray = str.getBytes("UTF-8");
}
catch(UnsupportedEncodingException ex)
{
}
if(byteArray == null) return 0;
return byteArray.length;
}
자바 긴 문자열 자르는 방법
/*
* @param srcString 대상문자열
* @param nLength 길이
* @param isNoTag 태그 제거 여부
* @param isAddDot "..."을추가 여부
*/
public static String strCut(String srcString, int nLength, boolean isNoTag, boolean isAddDot)
{
String rtnVal = srcString;
int oL = 0, rF = 0, rL = 0; //oF = 0
//int nLengthPrev = 0;
// 태그 제거
if(isNoTag)
{
Pattern p = Pattern.compile("<(/?)([^<>]*)?>", Pattern.CASE_INSENSITIVE); // 태그제거
rtnVal = p.matcher(rtnVal).replaceAll(""); // 패턴
}
rtnVal = rtnVal.replaceAll("&", "&");
rtnVal = rtnVal.replaceAll("(!/|r|n| )", ""); // 공백제거
try
{
byte[] bytes = rtnVal.getBytes("UTF-8"); // 바이트로 보관
// x부터 y길이만큼 잘라낸다. 한글안깨지게.
int j = 0;
j = rF;
while (j < bytes.length)
{
if((bytes[j] & 0x80) != 0)
{
if(oL + 2 > nLength)
{
break;
}
oL += 2;
rL += 3;
j += 3;
}
else
{
if(oL + 1 > nLength)
{
break;
}
++oL;
++rL;
++j;
}
}
rtnVal = new String(bytes, rF, rL, "UTF-8"); // charset 옵션
if(isAddDot && rF + rL + 3 <= bytes.length)
{
rtnVal += "...";
} // ...을 붙일지말지 옵션
}
catch(UnsupportedEncodingException e)
{
log.info(e.toString());
log.info(e.getMessage());
return srcString;
}
return rtnVal;
}
자바 문자열 NULL 체크 하는 방법 함수 모음
public static boolean isNull(String str)
{
return (str == null || (str.trim().length()) == 0);
}
public static boolean isNull(Object obj)
{
String str = null;
if(obj instanceof String) str = (String) obj;
else return true;
return isNull(str);
}
// null이 아닐때.
public static boolean isNotNull(String str)
{
if(isNull(str)) return false;
else return true;
}
//널체크
public static boolean isNotNull(Object obj)
{
String str = null;
if(obj instanceof String) str = (String) obj;
else return false;
return isNotNull(str);
}
//파라미터가 null 이거나 공백이 있을경우 "" 로 return
public static String replaceNull(String value)
{
return replaceNull(value, "");
}
//Object를 받아서 String 형이 아니거나 NULL이면 ""를 return String 형이면 형 변환해서 넘겨준다.
public static String replaceNull(Object value)
{
Object rtnValue = value;
String strClassName = rtnValue.getClass().getName();
if(!strClassName.equals("java.lang.String"))
{
rtnValue = "";
}
return replaceNull((String) rtnValue, "");
}
//파라미터로 넘어온 값이 null 이거나 공백이 포함된 문자라면 defaultValue를 return 아니면 값을 trim해서 넘겨준다.
public static String replaceNull(String value, String defaultValue)
{
if(isNull(value))
{
return defaultValue;
}
return value.trim();
}
//Object를 받아서 String 형이 아니거나 NULL이면 defaultValue를 return String 형이면 형 변환해서 넘겨준다.
public static String replaceNull(Object value, String defaultValue)
{
String valueStr = replaceNull(value);
if(isNull(valueStr))
{
return defaultValue;
}
return valueStr.trim();
}
//Object를 int형으로 defaultValue는 0이다.
public static int parseInt(Object value)
{
String valueStr = replaceNull(value);
return parseInt(valueStr, 0);
}
public static int parseInt(String value)
{
return parseInt(value, 0);
}
//Object를 int형으로 Object가 null이면 defaultValue return
public static int parseInt(Object value, int defaultValue)
{
String valueStr = replaceNull(value);
return parseInt(valueStr, defaultValue);
}
//String을 int형으로 String이 숫자 형식이 아니면 defaultValue return
public static int parseInt(String value, int defaultValue)
{
int returnValue = 0;
if(isNull(value))
{
returnValue = defaultValue;
}
else if(!isNumeric(value))
{
returnValue = defaultValue;
}
else
{
returnValue = Integer.parseInt(value);
}
return returnValue;
}
// String을 int형으로 String이 숫자 형식이 아니면 defaultValue return
public static String parseIntToString(String value)
{
return String.valueOf((parseInt(value, 0)));
}
//String을 long형으로 defaultValue는 0이다.
public static long parseLong(String value)
{
return parseLong(value, 0);
}
//String을 long형으로 잘못된 데이타 일시 return은 defaultValue
public static long parseLong(String value, long defaultValue)
{
long returnValue = 0;
if(isNull(value))
{
returnValue = defaultValue;
}
else if(!isNumeric(value))
{
returnValue = defaultValue;
}
else
{
returnValue = Long.parseLong(value);
}
return returnValue;
}
//String 배열을 List로 변환한다.
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List changeList(String[] values)
{
List list = new ArrayList();
if(values == null)
{
return list;
}
for(int i = 0, n = values.length; i < n; i++)
{
list.add(values[i]);
}
return list;
}
public static String[] toTokenArray(String str, String sep)
{
String[] temp = null;
try
{
StringTokenizer st = new StringTokenizer(str, sep);
temp = new String[st.countTokens()];
int index = 0;
while(st.hasMoreTokens())
{
temp[index++] = st.nextToken();
}
}
catch (Exception e)
{
log.info(e.toString());
log.info(e.getMessage());
}
return temp;
}
public static String strip(String str, String str1)
{
if(str == null || "".equals(str.trim())) return "";
String temp = str;
int pos = -1;
while((pos = temp.indexOf(str1, pos)) != -1)
{
String left = temp.substring(0, pos);
String right = temp.substring(pos + 1, temp.length());
temp = left + "" + right;
pos += 1;
}
return temp;
}
//Object를 받아서 null이면 ""리턴 그렇지않으면 String형 변환해서 넘겨준다.
public static String replaceString(Object value)
{
if(isNull(value)) return "";
Object rtnValue = value;
return replaceNull((String) rtnValue, "");
}
//string에 있는 ', ", rn 를 HTML 코드로 변환한다.
public static String changeQuotation(String str)
{
String rtnValue = str;
rtnValue = replaceNull(rtnValue);
rtnValue = replace(replace(replace(rtnValue, "'", "'"), """, """), "rn", "<br>");
return rtnValue;
}
public static String changeQuotation(Object obj)
{
if(isStringInteger(obj))
{
return changeQuotation(String.valueOf(obj));
}
return "";
}
//해당 Object가 String or Integer 이면 true 아니면 false
public static boolean isStringInteger(Object obj)
{
boolean flag = false;
if(obj instanceof String || obj instanceof Integer)
{
flag = true;
}
return flag;
}
Html 코드에서 <br> 태크 제거
public static String convertHtmlBr(String comment)
{
String rtnValue = "";
if(isNull(comment))
{
return "";
}
rtnValue = replace(comment, "rn", "<br>");
return rtnValue;
}
위에서 정의한 메소드(함수)들이 사용하는 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;