package kr.kangwoo.util; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class StringUtils { public static final String EMPTY = ""; //$NON-NLS-1$ public static final String NULL = "null"; //$NON-NLS-1$ public static final char[] WORD_SEPARATORS = {'_', '-', '@', '$', '#', ' '}; public static final int INDEX_NOT_FOUND = -1; private StringUtils() { } /** *
¹®ÀÚ(char)°¡ ´Ü¾î ±¸ºÐÀÚ('_', '-', '@', '$', '#', ' ')ÀÎÁö ÆÇ´ÜÇÑ´Ù.
* * @param c ¹®ÀÚ(char) * @return ´Ü¾î ±¸ºÐÀÚÀ̸é true, ¾Æ´Ï¸é false¸¦ ¹ÝȯÇÑ´Ù. */ public static boolean isWordSeparator(char c) { for (int i = 0; i < WORD_SEPARATORS.length; i++) { if (WORD_SEPARATORS[i] == c) { return true; } } return false; } /** *¹®ÀÚ(char)°¡ ´Ü¾î ±¸ºÐÀÚ(wordSeparators)ÀÎÁö ÆÇ´ÜÇÑ´Ù.
*´Ü¾î ±¸ºÐÀÚ°¡ null
À̸é false¸¦ ¹ÝȯÇÑ´Ù.
¹®ÀÚ¿(String)À» Ä«¸áÇ¥±â¹ýÀ¸·Î Ç¥ÇöÇÑ´Ù.
* ** StringUtils.camelString("ITEM_CODE", true) = "ItemCode" * StringUtils.camelString("ITEM_CODE", false) = "itemCode" ** * @param str ¹®ÀÚ¿ * @param firstCharacterUppercase ù¹®ÀÚ¿À» ´ë¹®ÀÚ·Î ÇÒÁö ¿©ºÎ * @return Ä«¸áÇ¥±â¹ýÀ¸·Î Ç¥Çöȯ ¹®ÀÚ¿ */ public static String camelString(String str, boolean firstCharacterUppercase) { if (str == null) { return null; } StringBuffer sb = new StringBuffer(); boolean nextUpperCase = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (isWordSeparator(c)) { if (sb.length() > 0) { nextUpperCase = true; } } else { if (nextUpperCase) { sb.append(Character.toUpperCase(c)); nextUpperCase = false; } else { sb.append(Character.toLowerCase(c)); } } } if (firstCharacterUppercase) { sb.setCharAt(0, Character.toUpperCase(sb.charAt(0))); } return sb.toString(); } /** *
ÀÔ·Â ¹ÞÀº ¹®ÀÚ¸¦ ¹Ýº¹¼ýÀÚ¸¸Å ºÙ¿©¼ ¸¸µç´Ù.
* ** StringUtils.repeat(null, *) = null * StringUtils.repeat("", -1) = "" * StringUtils.repeat("", 2) = "" * StringUtils.repeat("han", -1) = "" * StringUtils.repeat("han", 0) = "" * StringUtils.repeat("han", 2) = "hanhan" ** * @param str * @param repeat ¹Ýº¹¼ýÀÚ * @return */ public static String repeat(String str, int repeat) { if (str == null) { return null; } if (repeat < 1) { return EMPTY; } int inputLen = str.length(); if (inputLen == 0 || repeat == 1) { return str; } int outputLen = inputLen * repeat; if (inputLen == 1) { char ch = str.charAt(0); char[] output = new char[outputLen]; for (int i = 0; i < outputLen; i++) { output[i] = ch; } return new String(output); } else { StringBuilder output = new StringBuilder((int) Math.min((outputLen*110L)/100, Integer.MAX_VALUE)); for (int i = 0; i < repeat; i++) { output.append(str); } return output.toString(); } } // ---------------------------------------------------------------------- // °ø¹é/¿©¹é¹®ÀÚ °Ë»ç, Á¦°Å, ġȯ // ---------------------------------------------------------------------- /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑÈÄ, °ø¹é("")À̰ųª null
ÀÎ °Ë»çÇÑ´Ù.
* StringUtils.isBlank(null) = true * StringUtils.isBlank("") = true * StringUtils.isBlank(" ") = true * StringUtils.isBlank("han") = false * StringUtils.isBlank(" han ") = false ** * @param str ¹®ÀÚ¿ * @return */ public static boolean isBlank(String str) { if (str == null) { return true; } int strLen = str.length(); if (strLen > 0) { for (int i = 0; i < strLen; i++) { if (Character.isWhitespace(str.charAt(i)) == false) { return false; } } } return true; } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑÈÄ, °ø¹é("")ÀÌ ¾Æ´Ï°Å³ª null
ÀÌ ¾Æ´ÑÁö °Ë»çÇÑ´Ù.
* StringUtils.isNotBlank(null) = false * StringUtils.isNotBlank("") = false * StringUtils.isNotBlank(" ") = false * StringUtils.isNotBlank("han") = true * StringUtils.isNotBlank(" han ") = true ** * @param str ¹®ÀÚ¿ * @return */ public static boolean isNotBlank(String str) { return !isBlank(str); } /** *
¹®ÀÚ¿(String)ÀÌ °ø¹é("")À̰ųª null
ÀÎ °Ë»çÇÑ´Ù.
* StringUtils.isEmpty(null) = true * StringUtils.isEmpty("") = true * StringUtils.isEmpty(" ") = false * StringUtils.isEmpty("han") = false * StringUtils.isEmpty(" han ") = false ** * * @param str °Ë»çÇÒ ¹®ÀÚ¿ * @return */ public static boolean isEmpty(String str) { return str == null || str.length() == 0; } /** *
¹®ÀÚ¿(String)ÀÌ °ø¹é("")ÀÌ ¾Æ´Ï°Å³ª null
ÀÌ ¾Æ´ÑÁö °Ë»çÇÑ´Ù.
* StringUtils.isNotEmpty(null) = false * StringUtils.isNotEmpty("") = false * StringUtils.isNotEmpty(" ") = true * StringUtils.isNotEmpty("han") = true * StringUtils.isNotEmpty(" han ") = true ** * @param str °Ë»çÇÒ ¹®ÀÚ¿ * @return */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑ´Ù.
* ** StringUtils.trim(null) = null * StringUtils.trim("") = "" * StringUtils.trim(" ") = "" * StringUtils.trim("han") = "han" * StringUtils.trim(" han ") = "han" ** * @param str ¹®ÀÚ¿ * @return */ public static String trim(String str) { return str == null ? null : str.trim(); } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑ ÈÄ °ø¹é("")À̰ųª null
À̸é null
À» ¹ÝȯÇÑ´Ù.
* StringUtils.trimToNull(null) = null * StringUtils.trimToNull("") = null * StringUtils.trimToNull(" ") = null * StringUtils.trimToNull("han") = "han" * StringUtils.trimToNull(" han ") = "han" ** * @param str ¹®ÀÚ¿ * @return */ public static String trimToNull(String str) { return isBlank(str) ? null : trim(str); } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑ ÈÄ °ø¹é("")À̰ųª null
ÀÌ¸é °ø¹é("")À» ¹ÝȯÇÑ´Ù.
* StringUtils.trimToEmpty(null) = "" * StringUtils.trimToEmpty("") = "" * StringUtils.trimToEmpty(" ") = "" * StringUtils.trimToEmpty("han") = "han" * StringUtils.trimToEmpty(" han ") = "han" ** * @param str ¹®ÀÚ¿ * @return */ public static String trimToEmpty(String str) { return isBlank(str) ? EMPTY : trim(str); } /** *
¹®ÀÚ¿(String)ÀÌ null
ÀÌ¸é ±âº»¹®ÀÚ¿À» ¹ÝȯÇÑ´Ù.
* StringUtils.defaultIfNull(null, "") = "" * StringUtils.defaultIfNull("", "") = "" * StringUtils.defaultIfNull(" ", "") = " " * StringUtils.defaultIfNull("han", "") = "han" * StringUtils.defaultIfNull(" han ", "") = " han " ** * @param str ¹®ÀÚ¿ * @param defaultStr ±âº»¹®ÀÚ¿ * @return */ public static String defaultIfNull(String str, String defaultStr) { return str == null ? defaultStr : str; } /** *
¹®ÀÚ¿(String)ÀÌ null
ÀÌ¸é °ø¹é¹®ÀÚ¿À» ¹ÝȯÇÑ´Ù.
* StringUtils.defaultIfNull(null) = "" * StringUtils.defaultIfNull("") = "" * StringUtils.defaultIfNull(" ") = " " * StringUtils.defaultIfNull("han") = "han" * StringUtils.defaultIfNull(" han ") = " han " ** * @param str ¹®ÀÚ¿ * @return */ public static String defaultIfNull(String str) { return defaultIfNull(str, EMPTY); } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑÈÄ, °ø¹é("")À̰ųª null
À̸é, ±âº»¹®ÀÚ¿À» ¹ÝȯÇÑ´Ù.
* StringUtils.defaultIfBlank(null, "") = "" * StringUtils.defaultIfBlank("", "") = "" * StringUtils.defaultIfBlank(" ", "") = "" * StringUtils.defaultIfBlank("han", "") = "han" * StringUtils.defaultIfBlank(" han ", "") = " han " ** * @param str ¹®ÀÚ¿ * @param defaultStr ±âº»¹®ÀÚ¿ * @return */ public static String defaultIfBlank(String str, String defaultStr) { return isBlank(str) ? defaultStr : str; } /** *
¹®ÀÚ¿(String)ÀÇ ÁÂ¿ì ¿©¹é¹®ÀÚ(white space)¸¦ Á¦°ÅÇÑÈÄ, °ø¹é("")À̰ųª null
À̸é, °ø¹é¹®ÀÚ¿À» ¹ÝȯÇÑ´Ù.
* StringUtils.defaultIfBlank(null) = "" * StringUtils.defaultIfBlank("") = "" * StringUtils.defaultIfBlank(" ") = "" * StringUtils.defaultIfBlank("han") = "han" * StringUtils.defaultIfBlank(" han ") = " han " ** * @param str ¹®ÀÚ¿ * @return */ public static String defaultIfBlank(String str) { return defaultIfBlank(str, EMPTY); } // ---------------------------------------------------------------------- // ¹®ÀÚ¿ ºñ±³ // ---------------------------------------------------------------------- /** *
µÎ ¹®ÀÚ¿(String)ÀÌ ÀÏÄ¡Çϸé true
À» ¹ÝȯÇÑ´Ù.
* StringUtils.equals(null, null) = true * StringUtils.equals(null, "") = false * StringUtils.equals("", null) = false * StringUtils.equals(null, "han") = false * StringUtils.equals("han", null) = false * StringUtils.equals("han", "han") = true * StringUtils.equals("han", "HAN") = false ** * @see java.lang.String#equals(Object) * @param str1 ù¹øÂ° ¹®ÀÚ¿ * @param str2 µÎ¹øÂ° ¹®ÀÚ¿ * @return ¹®ÀÚ¿(String)ÀÌ ÀÏÄ¡Çϸé
true
*/
public static boolean equals(String str1, String str2) {
return str1 == null ? str2 == null : str1.equals(str2);
}
/**
* ´ë¼Ò¹®ÀÚ¸¦ ¹«½ÃÇÑ, µÎ ¹®ÀÚ¿(String)ÀÌ ÀÏÄ¡Çϸé true
À» ¹ÝȯÇÑ´Ù.
* StringUtils.equalsIgnoreCase(null, null) = true * StringUtils.equalsIgnoreCase(null, "") = false * StringUtils.equalsIgnoreCase("", null) = false * StringUtils.equalsIgnoreCase(null, "han") = false * StringUtils.equalsIgnoreCase("han", null) = false * StringUtils.equalsIgnoreCase("han", "han") = true * StringUtils.equalsIgnoreCase("han", "HAN") = true ** * @see java.lang.String#equalsIgnoreCase(String) * @param str1 ù¹øÂ° ¹®ÀÚ¿ * @param str2 µÎ¹øÂ° ¹®ÀÚ¿ * @return ´ë¼Ò¹®ÀÚ¸¦ ¹«½ÃÇÑ ¹®ÀÚ¿(String)ÀÌ ÀÏÄ¡Çϸé
true
*/
public static boolean equalsIgnoreCase(String str1, String str2) {
return str1 == null ? str2 == null : str1.equalsIgnoreCase(str2);
}
/**
* ¹®ÀÚ¿ÀÌ Á¢µÎ»ç·Î ½ÃÀÛÇÏ´ÂÁö¸¦ ÆÇ´ÜÇÑ´Ù.
* ** StringUtils.startsWith(null, *) = false * StringUtils.startsWith(*, null) = false * StringUtils.startsWith("han", "h") = true * StringUtils.startsWith("han", "a") = false ** * @param str ¹®ÀÚ¿ * @param prefix Á¢µÎ»ç * @return */ public static boolean startsWith(String str, String prefix) { if (str == null || prefix == null) { return false; } return str.startsWith(prefix); } /** *
¹®ÀÚ¿ offset À§Ä¡ºÎÅÍ Á¢µÎ»ç·Î ½ÃÀÛÇÏ´ÂÁö¸¦ ÆÇ´ÜÇÑ´Ù.
* ** StringUtils.startsWith(null, *, 0) = false * StringUtils.startsWith(*, null, 0) = false * StringUtils.startsWith("han", "h", 0) = true * StringUtils.startsWith("han", "a", 0) = false * StringUtils.startsWith("han", "a", 1) = true ** * @param str ¹®ÀÚ¿ * @param prefix Á¢µÎ»ç * @param offset ºñ±³ ½ÃÀÛ À§Ä¡ * @return */ public static boolean startsWith(String str, String prefix, int offset) { if (str == null || prefix == null) { return false; } return str.startsWith(prefix, offset); } /** *
¹®ÀÚ¿ÀÌ Á¢¹Ì»ç·Î ³¡³ª´ÂÁö¸¦ ÆÇ´ÜÇÑ´Ù.
* ** StringUtils.endsWith(null, *) = false * StringUtils.endsWith(*, null) = false * StringUtils.endsWith("han", "h") = false * StringUtils.endsWith("han", "n") = true ** * @param str ¹®ÀÚ¿ * @param prefix Á¢µÎ»ç * @return */ public static boolean endsWith(String str, String suffix) { if (str == null || suffix == null) { return false; } return str.endsWith(suffix); } /** *
¹®ÀÚ¿(String)¿¡ °Ë»ö¹®ÀÚ¿(String)ÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö °Ë»çÇÑ´Ù.
* ** StringUtils.contains(null, *) = false * StringUtils.contains(*, null) = false * StringUtils.contains("han", "") = true * StringUtils.contains("han", "h") = true * StringUtils.contains("han", "H") = false ** * @see java.lang.String#indexOf(String) * @param str ¹®ÀÚ¿ * @param searchStr °Ë»ö¹®ÀÚ¿ * @return ¹®ÀÚ¿(String)¿¡ °Ë»ö ¹®ÀÚ¿ÀÌ Æ÷ÇԵǾî ÀÖÀ»¶§
true
,
* ¹®ÀÚ¿(String)¿¡ °Ë»ö ¹®ÀÚ¿ÀÌ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ»¶§³ª, ¹®ÀÚ¿ ¶Ç´Â °Ë»ö¹®ÀÚ¿ÀÌ null
À϶§ false
*/
public static boolean contains(String str, String searchStr) {
if (str == null || searchStr == null) {
return false;
}
return str.indexOf(searchStr) > INDEX_NOT_FOUND;
}
// ----------------------------------------------------------------------
// ´ë/¼Ò¹®ÀÚ º¯È¯
// ----------------------------------------------------------------------
/**
* ¹®ÀÚ¿(String)À» ´ë¹®ÀÚ·Î º¯È¯ÇÑ´Ù.
* ** StringUtils.toUpperCase(null) = null * StringUtils.toUpperCase("han") = "HAN" * StringUtils.toUpperCase("hAn") = "HAN" ** * @param str ¹®ÀÚ¿ * @return ´ë¹®ÀÚ·Î º¯È¯ÇÑ ¹®ÀÚ¿ */ public static String toUpperCase(String str) { if (str == null) { return null; } return str.toUpperCase(); } /** *
½ÃÀÛ À妽ººÎÅÍ Á¾·á À妽º±îÁö ´ë¹®ÀÚ·Î º¯È¯ÇÑ´Ù.
* ** StringUtils.toUpperCase(null, *, *) = null * StringUtils.toUpperCase("han", 0, 1) = "Han" * StringUtils.toUpperCase("han", 0, 2) = "HAn" * StringUtils.toUpperCase("han", 0, 3) = "HAN" ** * @param str * @param beginIndex * @param endIndex * @return */ public static String toUpperCase(String str, int beginIndex, int endIndex) { if (str == null) { return null; } StringBuilder sb = new StringBuilder(); if (beginIndex < 0) { beginIndex = 0; } if (endIndex > str.length()) { endIndex = str.length(); } if (beginIndex > 0) { sb.append(str.substring(0, beginIndex)); } sb.append(str.substring(beginIndex, endIndex).toUpperCase()); if (endIndex < str.length()) { sb.append(str.substring(endIndex)); } return sb.toString(); } /** *
¹®ÀÚ¿(String)À» ¼Ò¹®ÀÚ·Î º¯È¯ÇÑ´Ù.
* ** StringUtils.toLowerCase(null) = null * StringUtils.toLowerCase("han") = "han" * StringUtils.toLowerCase("hAn") = "han" ** * @param str ¹®ÀÚ¿ * @return ¼Ò¹®ÀÚ·Î º¯È¯ÇÑ ¹®ÀÚ¿ */ public static String toLowerCase(String str) { if (str == null) { return null; } return str.toLowerCase(); } /** *
½ÃÀÛ À妽ººÎÅÍ Á¾·á À妽º±îÁö ¼Ò¹®ÀÚ·Î º¯È¯ÇÑ´Ù.
* ** StringUtils.toLowerCase(null, *, *) = null * StringUtils.toLowerCase("HAN", 0, 1) = "hAN" * StringUtils.toLowerCase("HAN", 0, 2) = "haN" * StringUtils.toLowerCase("HAN", 0, 3) = "han" ** * @param str * @param beginIndex * @param endIndex * @return */ public static String toLowerCase(String str, int beginIndex, int endIndex) { if (str == null) { return null; } StringBuilder sb = new StringBuilder(); if (beginIndex < 0) { beginIndex = 0; } if (endIndex > str.length()) { endIndex = str.length(); } if (beginIndex > 0) { sb.append(str.substring(0, beginIndex)); } sb.append(str.substring(beginIndex, endIndex).toLowerCase()); if (endIndex < str.length()) { sb.append(str.substring(endIndex)); } return sb.toString(); } /** *
´ë¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î º¯È¯ÇÏ°í ¼Ò¹®ÀÚ´Â ´ë¹®ÀÚ·Î º¯È¯ÇÑ´Ù.
* ** StringUtils.swapCase(null) = null * StringUtils.swapCase("Han") = "hAN" * StringUtils.swapCase("hAn") = "HaN" ** * @param str ¹®ÀÚ¿ * @return */ public static String swapCase(String str) { if (str == null) { return null; } char[] charArray = str.toCharArray(); for (int i = 0; i < charArray.length; i++) { if (Character.isLowerCase(charArray[i])) { charArray[i] = Character.toUpperCase(charArray[i]); } else { charArray[i] = Character.toLowerCase(charArray[i]); } } return new String(charArray); } /** * ¹®ÀÚ¿(String)ÀÇ Ã¹¹øÂ° ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯È¯ÇÑ´Ù. * *
* StringUtils.capitalize(null) = null * StringUtils.capitalize("Han") = "Han" * StringUtils.capitalize("han") = "Han" ** * @param str ¹®ÀÚ¿ * @return ù¹øÂ° ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯È¯ÇÑ ¹®ÀÚ¿ */ public static String capitalize(String str) { if (str == null) { return null; } char[] charArray = str.toCharArray(); if (charArray.length > 0) { charArray[0] = Character.toUpperCase(charArray[0]); } return new String(charArray); } /** * ¹®ÀÚ¿(String)ÀÇ Ã¹¹øÂ° ¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î º¯È¯ÇÑ´Ù. * *
* StringUtils.uncapitalize(null) = null * StringUtils.uncapitalize("han") = "han" * StringUtils.uncapitalize("HAN") = "hAN" ** * @param str ¹®ÀÚ¿ * @return ù¹øÂ° ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯È¯ÇÑ ¹®ÀÚ¿ */ public static String uncapitalize(String str) { if (str == null) { return null; } char[] charArray = str.toCharArray(); if (charArray.length > 0) { charArray[0] = Character.toLowerCase(charArray[0]); } return new String(charArray); } // ---------------------------------------------------------------------- // ¹®ÀÚ¿ ¹è¿ °áÇÕ/ºÐ¸® // ---------------------------------------------------------------------- /** *
¹®ÀÚ¿ ¹è¿À» ÇϳªÀÇ ¹®ÀÚ¿·Î °áÇÕ½ÃŲ´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")Àº ¹«½ÃÇÑ´Ù.
* StringUtils.compose(null, *) = "" * StringUtils.compose(["h", "a", "n"], ".") = "h.a.n" * StringUtils.compose([null, "a", "n"], ".") = "a.n" * StringUtils.compose(["", "a", "n"], ".") = "a.n" * StringUtils.compose(["h", "", "n"], ".") = "h.n" * StringUtils.compose([" ", "a", "n"], ".") = " .a.n" ** * @param strArray ¹®ÀÚ¿ ¹è¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î °áÇÕÇÑ ¹®ÀÚ¿ */ public static String compose(String[] strArray, char separator) { StringBuilder sb = new StringBuilder(); if (strArray != null) { for (int i = 0; i < strArray.length; i++) { if (StringUtils.isEmpty(strArray[i])) { sb.append(EMPTY); } else { if (sb.length() > 0) { sb.append(separator); } sb.append(strArray[i]); } } } return sb.toString(); } /** *
¹®ÀÚ¿ ¹è¿À» ÇϳªÀÇ ¹®ÀÚ¿·Î °áÇÕ½ÃŲ´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")Àº ¹«½ÃÇÑ´Ù.
* StringUtils.compose(null, *) = "" * StringUtils.compose(["h", "a", "n"], ".") = "h.a.n" * StringUtils.compose([null, "a", "n"], ".") = "a.n" * StringUtils.compose(["", "a", "n"], ".") = "a.n" * StringUtils.compose(["h", "", "n"], ".") = "h.n" * StringUtils.compose([" ", "a", "n"], ".") = " .a.n" ** * @param strArray ¹®ÀÚ¿ ¹è¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î °áÇÕÇÑ ¹®ÀÚ¿ */ public static String compose(String[] strArray, String separator) { StringBuilder sb = new StringBuilder(); if (strArray != null) { for (int i = 0; i < strArray.length; i++) { if (StringUtils.isEmpty(strArray[i])) { sb.append(EMPTY); } else { if (sb.length() > 0) { sb.append(separator); } sb.append(strArray[i]); } } } return sb.toString(); } /** *
¹®ÀÚ¿ ¹è¿À» ÇϳªÀÇ ¹®ÀÚ¿·Î °áÇÕ½ÃŲ´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")µµ Æ÷ÇÔÇÑ´Ù.
* StringUtils.join(null, *) = "" * StringUtils.join(["h", "a", "n"], '-') = "h-a-n" * StringUtils.join([null, "a", "n"], '-') = "-a-n" * StringUtils.join(["", "a", "n"], '-') = "-a-n" * StringUtils.join(["h", "", "n"], '-') = "h--n" * StringUtils.join([" ", "a", "n"], '-') = " -a-n" ** * @param strArray ¹®ÀÚ¿ ¹è¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î °áÇÕÇÑ ¹®ÀÚ¿ */ public static String join(String[] strArray, char separator) { StringBuilder sb = new StringBuilder(); if (strArray != null) { boolean isFirst = true; for (int i = 0; i < strArray.length; i++) { if (isFirst) { isFirst = false; } else { sb.append(separator); } if (StringUtils.isEmpty(strArray[i])) { sb.append(EMPTY); } else { sb.append(strArray[i]); } } } return sb.toString(); } /** *
¹®ÀÚ¿ ¹è¿À» ÇϳªÀÇ ¹®ÀÚ¿·Î °áÇÕ½ÃŲ´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")µµ Æ÷ÇÔÇÑ´Ù.
* StringUtils.join(null, *) = "" * StringUtils.join(["h", "a", "n"], "-") = "h-a-n" * StringUtils.join([null, "a", "n"], "-") = "-a-n" * StringUtils.join(["", "a", "n"], "-") = "-a-n" * StringUtils.join(["h", "", "n"], "-") = "h--n" * StringUtils.join([" ", "a", "n"], "-") = " -a-n" ** * @param strArray ¹®ÀÚ¿ ¹è¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î °áÇÕÇÑ ¹®ÀÚ¿ */ public static String join(String[] strArray, String separator) { StringBuilder sb = new StringBuilder(); if (strArray != null) { boolean isFirst = true; for (int i = 0; i < strArray.length; i++) { if (isFirst) { isFirst = false; } else { sb.append(separator); } if (StringUtils.isEmpty(strArray[i])) { sb.append(EMPTY); } else { sb.append(strArray[i]); } } } return sb.toString(); } /** *
¹®ÀÚ¿À» ±¸ºÐÀÚ·Î ³ª´©¾î¼, ¹®ÀÚ¿ ¹è¿·Î ¸¸µç´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")µµ Æ÷ÇÔÇÑ´Ù.
* StringUtils.split("h-a-n", '-') = ["h", "a", "n"] * StringUtils.split("h--n", '-') = ["h", "", "n"] * StringUtils.split(null, *) = null ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î ³ª´©¾îÁø ¹®ÀÚ¿ ¹è¿ */ public static String[] split(String str, char separator) { return split(str, new String(new char[]{separator})); } /** *
¹®ÀÚ¿À» ±¸ºÐÀÚ·Î ³ª´©¾î¼, ¹®ÀÚ¿ ¹è¿·Î ¸¸µç´Ù.
*¹è¿ÀÇ ¹®ÀÚ¿ Áß¿¡ null
°ú °ø¹é("")µµ Æ÷ÇÔÇÑ´Ù.
* StringUtils.split("h-a-n", "-") = ["h", "a", "n"] * StringUtils.split("h--n", "-") = ["h", "", "n"] * StringUtils.split(null, *) = null ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return ±¸ºÐÀÚ·Î ³ª´©¾îÁø ¹®ÀÚ¿ ¹è¿ */ public static String[] split(String str, String separator) { if (str == null) { return null; } StrTokenizer tokenizer = new StrTokenizer(str, separator); return tokenizer.toArray(); } // ---------------------------------------------------------------------- // ¹®ÀÚ¿ ÀÚ¸£±â // ---------------------------------------------------------------------- /** *
¹®ÀÚ¿(String)À» ÇØ´ç ±æÀÌ(length
) ¸¸Å, ¿ÞÂʺÎÅÍ ÀÚ¸¥´Ù.
* StringUtils.left(null, *) = null * StringUtils.left(*, -length) = "" * StringUtils.left("", *) = * * StringUtils.left("han", 0) = "" * StringUtils.left("han", 1) = "h" * StringUtils.left("han", 11) = "han" ** * @param str ¹®ÀÚ¿ * @param length ±æÀÌ * @return */ public static String left(String str, int length) { if (str == null) { return null; } if (length < 0) { return EMPTY; } if (str.length() <= length) { return str; } return str.substring(0, length); } /** *
¹®ÀÚ¿(String)À» ÇØ´ç ±æÀÌ(length
) ¸¸Å, ¿À¸¥ÂʺÎÅÍ ÀÚ¸¥´Ù.
* StringUtils.right(null, *) = null * StringUtils.right(*, -length) = "" * StringUtils.right("", *) = * * StringUtils.right("han", 0) = "" * StringUtils.right("han", 1) = "n" * StringUtils.right("han", 11) = "han" ** * @param str ¹®ÀÚ¿ * @param length ±æÀÌ * @return */ public static String right(String str, int length) { if (str == null) { return null; } if (length < 0) { return EMPTY; } if (str.length() <= length) { return str; } return str.substring(str.length() - length); } /** *
¹®ÀÚ¿(String)À» ½ÃÀÛ À§Ä¡(beginIndex
)ºÎÅÍ ±æÀÌ( length
) ¸¸Å ÀÚ¸¥´Ù.
½ÃÀÛ À§Ä¡(beginIndex
)°¡ À½¼öÀÏ °æ¿ì´Â 0À¸·Î ÀÚµ¿ º¯È¯µÈ´Ù.
* StringUtils.mid(null, *, *) = null * StringUtils.mid(*, *, -length) = "" * StringUtils.mid("han", 0, 1) = "h" * StringUtils.mid("han", 0, 11) = "han" * StringUtils.mid("han", 2, 3) = "n" * StringUtils.mid("han", -2, 3) = "han" ** * @param str ¹®ÀÚ¿ * @param beginIndex À§Ä¡(À½¼öÀÏ °æ¿ì´Â 0À¸·Î ÀÚµ¿ º¯È¯µÈ´Ù.) * @param length ±æÀÌ * @return */ public static String mid(String str, int beginIndex, int length) { if (str == null) { return null; } if (length < 0 || beginIndex > str.length()) { return EMPTY; } if (beginIndex < 0) { beginIndex = 0; } if (str.length() <= (beginIndex + length)) { return str.substring(beginIndex); } return str.substring(beginIndex, beginIndex + length); } /** *
½ÃÀÛ À妽ººÎÅÍ ¹®ÀÚ¿À» Àڴ´Ù.
*½ÃÀÛ À妽º°¡ 0º¸´Ù À۰ųª, ¹®ÀÚ¿ÀÇ ÃѱæÀ̺¸´Ù Å©¸é °ø¹é("")À» ¹ÝȯÇÑ´Ù.
* ** StringUtils.substring(null, *) = null * StringUtils.substring("", *) = "" * StringUtils.substring("han", 1) = "an" * StringUtils.substring("han", 615) = "" * StringUtils.substring("han", -1) = "" ** * @param str * @param beginIndex ½ÃÀÛ À妽º(0ºÎÅÍ ½ÃÀÛ) * @return */ public static String substring(String str, int beginIndex) { if (str == null){ return null; } if (beginIndex < 0) { return EMPTY; } if (beginIndex > str.length()) { return EMPTY; } return str.substring(beginIndex); } /** *
½ÃÀÛ À妽ººÎÅÍ ³¡ À妽º±îÁö ¹®ÀÚ¿À» Àڴ´Ù.
*½ÃÀÛ À妽º¶Ç´Â ³¡ À妽º°¡ 0º¸´Ù ÀÛÀ¸¸é °ø¹é("")À» ¹ÝȯÇÑ´Ù.
* ** StringUtils.substring(null, *, *) = null * StringUtils.substring("", *, *) = "" * StringUtils.substring("han", 1, 2) = "a" * StringUtils.substring("han", 1, 3) = "an" * StringUtils.substring("han", 1, 615) = "an" * StringUtils.substring("han", -1, *) = "" * StringUtils.substring("han", *, -1) = "" ** * @param str * @param beginIndex * @param endIndex * @return */ public static String substring(String str, int beginIndex, int endIndex) { if (str == null){ return null; } if (beginIndex < 0 || endIndex < 0) { return EMPTY; } if (endIndex > str.length()) { endIndex = str.length(); } if (beginIndex > endIndex || beginIndex > str.length()) { return EMPTY; } return str.substring(beginIndex, endIndex); } /** *
óÀ½ ¹ß°ßÇÑ ±¸ºÐÀÚÀÇ À§Ä¡±îÁö ¹®ÀÚ¿À» ÀÚ¸¥´Ù.
* ** StringUtils.substringBefore(null, *) = null * StringUtils.substringBefore("", *) = "" * StringUtils.substringBefore("han", null) = "han" * StringUtils.substringBefore("han", "") = "" * StringUtils.substringBefore("hanhan", "a") = "h" * StringUtils.substringBefore("hanhan", "g") = "hanhan" ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return */ public static String substringBefore(String str, String separator) { if (isEmpty(str) || separator == null) { return str; } if (separator.length() == 0) { return EMPTY; } int endIndex = str.indexOf(separator); if (endIndex == INDEX_NOT_FOUND) { return str; } return str.substring(0, endIndex); } /** *
¸¶Áö¸·À¸·Î ¹ß°ßÇÑ ±¸ºÐÀÚÀÇ À§Ä¡±îÁö ¹®ÀÚ¿À» ÀÚ¸¥´Ù.
* ** StringUtils.substringBeforeLast(null, *) = null * StringUtils.substringBeforeLast("", *) = "" * StringUtils.substringBeforeLast("han", null) = "han" * StringUtils.substringBeforeLast("han", "") = "han" * StringUtils.substringBeforeLast("hanhan", "a") = "hanh" * StringUtils.substringBeforeLast("hanhan", "g") = "hanhan" ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return */ public static String substringBeforeLast(String str, String separator) { if (isEmpty(str) || isEmpty(separator)) { return str; } int endIndex = str.lastIndexOf(separator); if (endIndex == INDEX_NOT_FOUND) { return str; } return str.substring(0, endIndex); } /** *
óÀ½ ¹ß°ßÇÑ ±¸ºÐÀÚÀÇ À§Ä¡ ´ÙÀ½ºÎÅÍ ¹®ÀÚ¿À» ÀÚ¸¥´Ù.
* ** StringUtils.substringAfter(null, *) = null * StringUtils.substringAfter("", *) = "" * StringUtils.substringAfter("han", null) = "" * StringUtils.substringAfter("han", "") = "han" * StringUtils.substringAfter("hanhan", "a") = "nhan" * StringUtils.substringAfter("hanhan", "g") = "" ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return */ public static String substringAfter(String str, String separator) { if (isEmpty(str)) { return str; } if (separator == null) { return EMPTY; } int beginIndex = str.indexOf(separator); if (beginIndex == INDEX_NOT_FOUND) { return EMPTY; } beginIndex = beginIndex + separator.length(); if (beginIndex == str.length()) { return EMPTY; } return str.substring(beginIndex); } /** *
¸¶Áö¸·À¸·Î ¹ß°ßÇÑ ±¸ºÐÀÚÀÇ À§Ä¡ ´ÙÀ½ºÎÅÍ ¹®ÀÚ¿À» ÀÚ¸¥´Ù.
* ** StringUtils.substringAfterLast(null, *) = null * StringUtils.substringAfterLast("", *) = "" * StringUtils.substringAfterLast("han", null) = "" * StringUtils.substringAfterLast("han", "") = "" * StringUtils.substringAfterLast("hanhan", "a") = "n" * StringUtils.substringAfterLast("hanhan", "g") = "" ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return */ public static String substringAfterLast(String str, String separator) { if (isEmpty(str)) { return str; } if (isEmpty(separator)) { return EMPTY; } int beginIndex = str.lastIndexOf(separator); if (beginIndex == INDEX_NOT_FOUND) { return EMPTY; } beginIndex = beginIndex + separator.length(); if (beginIndex == str.length()) { return EMPTY; } return str.substring(beginIndex); } /** *
½ÃÀÛ ¹®ÀÚºÎÅÍ ³¡ ¹®ÀÚ¿±îÁö ÀÚ¸¥´Ù.
* ** StringUtils.substringBetween(null, *, *) = null * StringUtils.substringBetween(*, null, *) = null * StringUtils.substringBetween(*, *, null) = null * StringUtils.substringBetween("hn", "<", ">") = "a" * StringUtils.substringBetween("hn", "<", ">") = "a" ** * @param str ¹®ÀÚ¿ * @param separator ±¸ºÐÀÚ * @return * @since 1.1 */ public static String substringBetween(String str, String open, String close) { if (str == null || open == null || close == null) { return null; } int start = str.indexOf(open); if (start != INDEX_NOT_FOUND) { int end = str.indexOf(close, start + open.length()); if (end != INDEX_NOT_FOUND) { return str.substring(start + open.length(), end); } else { // ³¡ÀÌ ¾øÀ¸¸é nullÀÌ ÁÁÀ»±î, ³¡±îÁö°¡ ÁÁÀ»±î... } } return null; } /** *
ÀÔ·ÂÇÑ ¹®ÀÚ¿À» ÇÑÁÙÀÇ ÃÖ´ë ±æÀ̸¸Å, ¿©·¯ ÁÙ·Î ³ª´©¾î ¹ÝȯÇÑ´Ù.
*°ø¹é(" ")À» ±âÁØÀ¸·Î ÁÙ ¹Ù²ÞÀ» ½ÃµµÇÑ´Ù.
* * @param str * @param maxLineLength ÇÑÁÙÀÇ ÃÖ´ë ±æÀÌ * @return */ public static List¹®ÀÚ¿ÀÌ ÇØ´ç ±æÀ̺¸´Ù Å©¸é, ÀÚ¸¥ ÈÄ ÁÙÀÓ¸»À» ºÙ¿©ÁØ´Ù.
*±æÀÌ´Â ±âº»¹®ÀÚµé(¿µ¾î/¼ýÀÚµî)ÀÌ 1À¸·Î, ´Ù±¹¾î(Çѱ۵î)À̸é 2·Î °è»êÇÑ´Ù.
* ** StringUtils.curtail(null, *, *) = null * StringUtils.curtail("abcdefghijklmnopqr", 10, null) = "abcdefghij" * StringUtils.curtail("abcdefghijklmnopqr", 10, "..") = "abcdefgh.." * StringUtils.curtail("ÇѱÛÀ» »ç¶ûÇսôÙ.", 10, null) = "ÇѱÛÀ» »ç¶û" * StringUtils.curtail("ÇѱÛÀ» »ç¶ûÇսôÙ.", 10, "..") = "ÇѱÛÀ» »ç.." ** * * @param str ¹®ÀÚ¿ * @param size ±æÀÌ(byte ±æÀÌ) * @param tail ÁÙÀÓ¸» * @return */ public static String curtail(String str, int size, String tail) { if (str == null) { return null; } int strLen = str.length(); int tailLen = (tail != null) ? tail.length() : 0; int maxLen = size - tailLen; int curLen = 0; int index = 0; for (; index < strLen && curLen < maxLen; index++) { if (Character.getType(str.charAt(index)) == Character.OTHER_LETTER) { curLen++; } curLen++; } if (index == strLen) { return str; } else { StringBuilder result = new StringBuilder(); result.append(str.substring(0, index)); if (tail != null) { result.append(tail); } return result.toString(); } } // ---------------------------------------------------------------------- // ÆÐµù // ---------------------------------------------------------------------- /** *
¿ÞÂʺÎÅÍ Å©±â¸¸Å ÆÐµù¹®ÀڷΠä¿î´Ù.
* ** StringUtils.leftPad("han", 5, " ") = " han" * StringUtils.leftPad("han", 5, "123") = "12han" * StringUtils.leftPad("han", 10, "123") = "1231231han" * StringUtils.leftPad("han", -1, " ") = "han" ** * @param str * @param size Å©±â * @param padStr ÆÐµù¹®ÀÚ * @return */ public static String leftPad(String str, int size, String padStr) { if (str == null) { return null; } if (isEmpty(padStr)) { padStr = " "; //$NON-NLS-1$ } int strLen = str.length(); int padStrLen = padStr.length(); int padLen = size - strLen; if (padLen <= 0) { // ÆÐµùÇÒ Çʿ䰡 ¾øÀ½ return str; } StringBuilder result = new StringBuilder(); if (padLen == padStrLen) { result.append(padStr); result.append(str); } else if (padLen < padStrLen) { result.append(padStr.substring(0, padLen)); result.append(str); } else { char[] padding = padStr.toCharArray(); for (int i = 0; i < padLen; i++) { result.append(padding[ i % padStrLen]); } result.append(str); } return result.toString(); } /** *
¿À¸¥ÂʺÎÅÍ Å©±â¸¸Å ÆÐµù¹®ÀڷΠä¿î´Ù.
* ** StringUtils.rightPad("han", 5, " ") = "han " * StringUtils.rightPad("han", 5, "123") = "han12" * StringUtils.rightPad("han", 10, "123") = "han1231231" * StringUtils.rightPad("han", -1, " ") = "han" ** * @param str * @param size Å©±â * @param padStr ÆÐµù¹®ÀÚ * @return */ public static String rightPad(String str, int size, String padStr) { if (str == null) { return null; } if (isEmpty(padStr)) { padStr = " "; //$NON-NLS-1$ } int strLen = str.length(); int padStrLen = padStr.length(); int padLen = size - strLen; if (padLen <= 0) { // ÆÐµùÇÒ Çʿ䰡 ¾øÀ½ return str; } StringBuilder result = new StringBuilder(); if (padLen == padStrLen) { result.append(str); result.append(padStr); } else if (padLen < padStrLen) { result.append(str); result.append(padStr.substring(0, padLen)); } else { result.append(str); char[] padding = padStr.toCharArray(); for (int i = 0; i < padLen; i++) { result.append(padding[ i % padStrLen]); } } return result.toString(); } }