You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
7.2 KiB
Java
218 lines
7.2 KiB
Java
package egovframework.util;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
/**
|
|
* 문자열 관련 공통 유틸리티 클래스
|
|
*/
|
|
@Component
|
|
public class StringUtil {
|
|
|
|
/**
|
|
* 문자열이 null이거나 빈 문자열인지 확인
|
|
* @param str 검사할 문자열
|
|
* @return null이거나 빈 문자열이면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean isEmpty(String str) {
|
|
return str == null || str.length() == 0;
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이 아니고 빈 문자열이 아닌지 확인
|
|
* @param str 검사할 문자열
|
|
* @return null이 아니고 빈 문자열이 아니면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean isNotEmpty(String str) {
|
|
return !isEmpty(str);
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이거나 빈 문자열이거나 공백 문자로만 이루어져 있는지 확인
|
|
* @param str 검사할 문자열
|
|
* @return null이거나 빈 문자열이거나 공백 문자로만 이루어져 있으면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean isBlank(String str) {
|
|
if (isEmpty(str)) {
|
|
return true;
|
|
}
|
|
for (int i = 0; i < str.length(); i++) {
|
|
if (!Character.isWhitespace(str.charAt(i))) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이 아니고 빈 문자열이 아니고 공백 문자로만 이루어져 있지 않은지 확인
|
|
* @param str 검사할 문자열
|
|
* @return null이 아니고 빈 문자열이 아니고 공백 문자로만 이루어져 있지 않으면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean isNotBlank(String str) {
|
|
return !isBlank(str);
|
|
}
|
|
|
|
/**
|
|
* 문자열의 앞뒤 공백을 제거
|
|
* @param str 처리할 문자열
|
|
* @return 앞뒤 공백이 제거된 문자열, null이면 null 반환
|
|
*/
|
|
public static String trim(String str) {
|
|
return str == null ? null : str.trim();
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이면 빈 문자열 반환, 그렇지 않으면 원래 문자열 반환
|
|
* @param str 처리할 문자열
|
|
* @return null이면 빈 문자열, 그렇지 않으면 원래 문자열
|
|
*/
|
|
public static String nullToEmpty(String str) {
|
|
return str == null ? "" : str;
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이거나 빈 문자열이면 기본값 반환, 그렇지 않으면 원래 문자열 반환
|
|
* @param str 처리할 문자열
|
|
* @param defaultValue 기본값
|
|
* @return null이거나 빈 문자열이면 기본값, 그렇지 않으면 원래 문자열
|
|
*/
|
|
public static String defaultIfEmpty(String str, String defaultValue) {
|
|
return isEmpty(str) ? defaultValue : str;
|
|
}
|
|
|
|
/**
|
|
* 문자열이 null이거나 빈 문자열이거나 공백 문자로만 이루어져 있으면 기본값 반환, 그렇지 않으면 원래 문자열 반환
|
|
* @param str 처리할 문자열
|
|
* @param defaultValue 기본값
|
|
* @return null이거나 빈 문자열이거나 공백 문자로만 이루어져 있으면 기본값, 그렇지 않으면 원래 문자열
|
|
*/
|
|
public static String defaultIfBlank(String str, String defaultValue) {
|
|
return isBlank(str) ? defaultValue : str;
|
|
}
|
|
|
|
/**
|
|
* 문자열의 좌측에서 지정된 길이만큼 문자열 추출
|
|
* @param str 처리할 문자열
|
|
* @param len 추출할 길이
|
|
* @return 추출된 문자열, null이면 null 반환
|
|
*/
|
|
public static String left(String str, int len) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
if (len < 0) {
|
|
return "";
|
|
}
|
|
if (str.length() <= len) {
|
|
return str;
|
|
}
|
|
return str.substring(0, len);
|
|
}
|
|
|
|
/**
|
|
* 문자열의 우측에서 지정된 길이만큼 문자열 추출
|
|
* @param str 처리할 문자열
|
|
* @param len 추출할 길이
|
|
* @return 추출된 문자열, null이면 null 반환
|
|
*/
|
|
public static String right(String str, int len) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
if (len < 0) {
|
|
return "";
|
|
}
|
|
if (str.length() <= len) {
|
|
return str;
|
|
}
|
|
return str.substring(str.length() - len);
|
|
}
|
|
|
|
/**
|
|
* 문자열에서 특정 문자열을 다른 문자열로 모두 치환
|
|
* @param str 처리할 문자열
|
|
* @param searchStr 찾을 문자열
|
|
* @param replaceStr 치환할 문자열
|
|
* @return 치환된 문자열, null이면 null 반환
|
|
*/
|
|
public static String replace(String str, String searchStr, String replaceStr) {
|
|
if (isEmpty(str) || isEmpty(searchStr) || replaceStr == null) {
|
|
return str;
|
|
}
|
|
return str.replace(searchStr, replaceStr);
|
|
}
|
|
|
|
/**
|
|
* 문자열 내의 HTML 특수 문자를 이스케이프 처리
|
|
* @param str 처리할 문자열
|
|
* @return 이스케이프 처리된 문자열, null이면 null 반환
|
|
*/
|
|
public static String escapeHtml(String str) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
return str.replace("&", "&")
|
|
.replace("<", "<")
|
|
.replace(">", ">")
|
|
.replace("\"", """)
|
|
.replace("'", "'");
|
|
}
|
|
|
|
/**
|
|
* 문자열 내의 줄바꿈 문자를 HTML <br> 태그로 변환
|
|
* @param str 처리할 문자열
|
|
* @return 변환된 문자열, null이면 null 반환
|
|
*/
|
|
public static String nl2br(String str) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
return str.replace("\r\n", "<br>")
|
|
.replace("\n", "<br>")
|
|
.replace("\r", "<br>");
|
|
}
|
|
|
|
/**
|
|
* 문자열이 지정된 접두사로 시작하는지 확인
|
|
* @param str 검사할 문자열
|
|
* @param prefix 접두사
|
|
* @return 지정된 접두사로 시작하면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean startsWith(String str, String prefix) {
|
|
return str != null && prefix != null && str.startsWith(prefix);
|
|
}
|
|
|
|
/**
|
|
* 문자열이 지정된 접미사로 끝나는지 확인
|
|
* @param str 검사할 문자열
|
|
* @param suffix 접미사
|
|
* @return 지정된 접미사로 끝나면 true, 그렇지 않으면 false
|
|
*/
|
|
public static boolean endsWith(String str, String suffix) {
|
|
return str != null && suffix != null && str.endsWith(suffix);
|
|
}
|
|
|
|
/**
|
|
* 문자열을 지정된 길이로 자르고 생략 부호를 추가
|
|
* @param str 처리할 문자열
|
|
* @param maxLength 최대 길이
|
|
* @param suffix 생략 부호 (예: "...")
|
|
* @return 처리된 문자열, null이면 null 반환
|
|
*/
|
|
public static String abbreviate(String str, int maxLength, String suffix) {
|
|
if (str == null) {
|
|
return null;
|
|
}
|
|
if (str.length() <= maxLength) {
|
|
return str;
|
|
}
|
|
if (suffix == null) {
|
|
suffix = "";
|
|
}
|
|
int suffixLength = suffix.length();
|
|
if (maxLength <= suffixLength) {
|
|
return suffix;
|
|
}
|
|
return str.substring(0, maxLength - suffixLength) + suffix;
|
|
}
|
|
} |