You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
9.8 KiB
371 lines
9.8 KiB
/********************************************************************************************************* |
|
* 프로그램명 : MString.java 프로그램설명 : 프로젝트와 관련된 정보를 얻을수 있는 class 작성자 : 강원중 작성일 : 2004.01.06 변경일 : 2003.11.30 |
|
**********************************************************************************************************/ |
|
|
|
package kr.co.kihyun.lang; |
|
|
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
|
|
public class MString { |
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(MString.class); |
|
|
|
public static String omit(String str, int upkeepLength) { |
|
return str.length() > upkeepLength ? str.substring(0, upkeepLength) + "..." : str; |
|
} |
|
|
|
/**************************** convert engine ****************************/ |
|
public static String convert(String string, String startStr, String endStr, String inStr) { |
|
return convert(new StringBuffer(string), startStr, endStr, inStr); |
|
} |
|
|
|
public static String convert(StringBuffer string, String startStr, String endStr, String inStr) { |
|
|
|
int strIndex = 0; |
|
int endIndex = 0; |
|
|
|
int count = 0; |
|
|
|
while (true) { |
|
if (count > 0) { |
|
strIndex = string.indexOf(startStr, strIndex + startStr.length()); |
|
} else { |
|
strIndex = string.indexOf(startStr, strIndex); |
|
} |
|
if (strIndex == -1) |
|
break; |
|
|
|
endIndex = string.indexOf(endStr, strIndex); |
|
if (endIndex == -1) |
|
break; |
|
|
|
string.replace(strIndex, endIndex + endStr.length(), inStr); |
|
count++; |
|
} |
|
return string.toString(); |
|
} |
|
|
|
/**************************** convert engine ****************************/ |
|
public static String convert(String string, String oldStr, String inStr) { |
|
return convert(new StringBuffer(string), oldStr, inStr); |
|
} |
|
|
|
public static String convert(StringBuffer string, String oldStr, String inStr) { |
|
|
|
int strIndex = 0; |
|
|
|
int count = 0; |
|
|
|
while (true) { |
|
if (count > 0) { |
|
strIndex = string.indexOf(oldStr, strIndex + oldStr.length()); |
|
} else { |
|
strIndex = string.indexOf(oldStr, strIndex); |
|
} |
|
|
|
if (strIndex == -1) |
|
break; |
|
string.replace(strIndex, strIndex + oldStr.length(), inStr); |
|
count++; |
|
} |
|
return string.toString(); |
|
} |
|
|
|
/**************************** delete ****************************/ |
|
public static String delete(String string, String startStr, String endStr) { |
|
return delete(new StringBuffer(string), startStr, endStr); |
|
} |
|
|
|
public static String delete(StringBuffer string, String startStr, String endStr) { |
|
|
|
int strIndex = 0; |
|
int endIndex = 0; |
|
int count = 0; |
|
while (true) { |
|
strIndex = string.indexOf(startStr, strIndex); |
|
if (strIndex == -1) |
|
break; |
|
endIndex = string.indexOf(endStr, strIndex); |
|
if (endIndex == -1) |
|
break; |
|
string = string.delete(strIndex, endIndex + endStr.length()); |
|
count++; |
|
} |
|
return string.toString(); |
|
} |
|
|
|
public static String orDelete(String string, String startStr, String endStr) { |
|
return orDelete(new StringBuffer(string), startStr, endStr); |
|
} |
|
|
|
public static String orDelete(StringBuffer string, String startStr, String endStr) { |
|
|
|
int strIndex = 0; |
|
int endIndex = 0; |
|
int endPos = 0; |
|
int count = 0; |
|
|
|
String[] endS = endStr.split(","); |
|
|
|
while (true) { |
|
endIndex = string.length(); |
|
endPos = -1; |
|
|
|
strIndex = string.indexOf(startStr, strIndex); |
|
if (strIndex == -1) |
|
break; |
|
|
|
// System.out.println("strIndex : "+strIndex); |
|
|
|
for (int i = 0; i < endS.length; i++) { |
|
// System.out.println("pos : "+(string.indexOf(endS[i], strIndex))); |
|
if ((string.indexOf(endS[i], strIndex)) > -1) { |
|
if (endIndex >= (string.indexOf(endS[i], strIndex))) { |
|
endIndex = string.indexOf(endS[i], strIndex); |
|
endPos = i; |
|
|
|
// System.out.println("endPos : "+endPos); |
|
} |
|
} |
|
} |
|
// endIndex = string.indexOf(endStr, strIndex); |
|
// if(endIndex == -1) break; |
|
if (endPos == -1 || endIndex == string.length()) |
|
break; |
|
string = string.delete(strIndex, endIndex + endS[endPos].length()); |
|
count++; |
|
} |
|
return string.toString(); |
|
} |
|
|
|
public static String delete(String string, String delStr) { |
|
return delete(new StringBuffer(string), delStr); |
|
} |
|
|
|
public static String delete(StringBuffer string, String delStr) { |
|
|
|
int strIndex = 0; |
|
int count = 0; |
|
|
|
while (true) { |
|
strIndex = string.indexOf(delStr, strIndex); |
|
|
|
// string table 삭제 |
|
if (strIndex == -1) |
|
break; |
|
string = string.delete(strIndex, delStr.length()); |
|
|
|
count++; |
|
} |
|
|
|
return string.toString(); |
|
} |
|
|
|
public static boolean isNull(String s) { |
|
return s == null || (s != null && (s.trim().equals("") || s.trim().toLowerCase().equals("null"))); |
|
} |
|
|
|
public static String checkNull(String s) { |
|
return MString.checkNull(s, ""); |
|
} |
|
|
|
public static String checkNull(String s, String defaultString) { |
|
return MString.isNull(s) ? defaultString : s; |
|
} |
|
|
|
// choyongjun tagFilter job |
|
public static boolean isWidthORHeightORColsORRowsORSum(String tdOld) { |
|
boolean isColsORRowsORSum = false; |
|
int colspan = 0; |
|
int rowspan = 0; |
|
int width = 0; |
|
int height = 0; |
|
int sum = 0; |
|
|
|
colspan = tdOld.indexOf("colspan", colspan); |
|
rowspan = tdOld.indexOf("rowspan", rowspan); |
|
width = tdOld.indexOf("width", width); |
|
height = tdOld.indexOf("height", height); |
|
sum = tdOld.indexOf("x:fmla=", sum); |
|
|
|
if (colspan > 0 || rowspan > 0 || width > 0 || height > 0 || sum > 0) { |
|
isColsORRowsORSum = true; |
|
} |
|
|
|
return isColsORRowsORSum; |
|
} |
|
|
|
public static String getString(String[] array, String inStr) { |
|
String inData = ""; |
|
for (int i = 0; i < array.length; i++) { |
|
if (i == 0) { |
|
inData += array[i]; |
|
} else { |
|
inData += (inStr + array[i]); |
|
} |
|
} |
|
return inData; |
|
} |
|
|
|
public static String replaceAll(String str, String oldStr, String newStr) throws StringIndexOutOfBoundsException { |
|
if (str == null) |
|
return ""; |
|
StringBuffer strbuf = new StringBuffer(str); |
|
int index = strbuf.indexOf(oldStr); |
|
int oldLength = oldStr.length(); |
|
int newLength = newStr.length(); |
|
|
|
while (index != -1) { |
|
strbuf.replace(index, index + oldLength, newStr); |
|
index = strbuf.indexOf(oldStr, index + newLength); |
|
} |
|
|
|
return strbuf.toString(); |
|
} |
|
|
|
// 문자를 바꾸어주는 메쏘드 |
|
//v2. 5.static final 필드 변조 가능성 : Update by KWON,HAN |
|
//private는 같은 클래스 내에서만 호출이 가능하므로 접근제한이 없는 public으로 하고 final을 사용하지 않는다. |
|
// public static final String replaceString(String str, String oldStr, String newStr) |
|
public static String replaceString(String str, String oldStr, String newStr) |
|
throws StringIndexOutOfBoundsException { |
|
LOG.debug("v2. 5.static final 필드 변조 가능성 : MString.replaceString() {}, {} : Test OK ", str, oldStr); |
|
LOG.debug("v2. 5.static final 필드 변조 가능성 : MString.replaceString() {}, {} : Test OK ", str, newStr); |
|
//========================================================== |
|
|
|
StringBuffer strbuf = new StringBuffer(str); |
|
|
|
int index2 = oldStr.length(); |
|
int index = str.indexOf(oldStr); |
|
|
|
for (int i = 0; i < strbuf.length() && index > -1; i++) { |
|
|
|
strbuf.replace(index, index + index2, newStr); |
|
index = str.indexOf(oldStr, index + 1); |
|
} |
|
|
|
return strbuf.toString(); |
|
} |
|
|
|
public static String[] split(String str, String delim) { |
|
|
|
int strIndex = -1; |
|
int endIndex = str.indexOf(delim); |
|
int delimLength = delim.length(); |
|
int strLength = str.length(); |
|
|
|
int size = 0; |
|
while (true) { |
|
if (endIndex == -1) { |
|
if (strIndex < strLength) |
|
size++; |
|
break; |
|
} |
|
|
|
if (strIndex != endIndex && endIndex != 0) |
|
size++; |
|
strIndex = endIndex + delimLength; |
|
endIndex = str.indexOf(delim, strIndex); |
|
} |
|
|
|
strIndex = 0; |
|
endIndex = str.indexOf(delim); |
|
String[] strList = new String[size]; |
|
|
|
for (int i = 0; i < size && strIndex != -1; i++) { |
|
if (endIndex == -1) { |
|
strList[i] = str.substring(strIndex, str.length()); |
|
} else { |
|
strList[i] = str.substring(strIndex, endIndex); |
|
} |
|
strIndex = endIndex + delimLength; |
|
endIndex = str.indexOf(delim, strIndex); |
|
} |
|
|
|
return strList; |
|
} |
|
|
|
public static String[] token(String str, String delim) { |
|
|
|
int strIndex = 0; |
|
int endIndex = str.indexOf(delim); |
|
int delimLength = delim.length(); |
|
int strLength = str.length(); |
|
|
|
int size = 0; |
|
while (true) { |
|
if (endIndex == -1) { |
|
if (strIndex < strLength) |
|
size++; |
|
break; |
|
} |
|
|
|
if (strIndex != endIndex) |
|
size++; |
|
strIndex = endIndex + delimLength; |
|
endIndex = str.indexOf(delim, strIndex); |
|
} |
|
|
|
strIndex = 0; |
|
endIndex = str.indexOf(delim); |
|
String[] strList = new String[size]; |
|
int i = 0; |
|
while (i < size) { |
|
if (endIndex == -1) { |
|
strList[i] = str.substring(strIndex, str.length()); |
|
break; |
|
} else { |
|
if (strIndex != endIndex) { |
|
strList[i] = str.substring(strIndex, endIndex); |
|
i++; |
|
} |
|
} |
|
strIndex = endIndex + delimLength; |
|
endIndex = str.indexOf(delim, strIndex); |
|
} |
|
|
|
return strList; |
|
} |
|
|
|
public static boolean isAlphabet(char ch) { |
|
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
|
|
|
if (alphabet.indexOf(Character.toString(ch)) > -1) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
public static int division(String str) { |
|
int length = 0; |
|
|
|
for (int i = 0; i < str.length(); i++) { |
|
if (Character.getType(str.charAt(i)) == 5) { |
|
length = length + 2; |
|
// System.out.print("이건한글이넹 :: "); |
|
// System.out.println(str.charAt(i)); |
|
} else { |
|
length = length + 1; |
|
// System.out.println(str.charAt(i)); |
|
} |
|
} |
|
|
|
return length; |
|
} |
|
|
|
public static String getEllipsis(String word, int wordLengthLimit) { |
|
return getEllipsis(word, wordLengthLimit, "..."); |
|
} |
|
|
|
public static String getEllipsis(String word, int wordLengthLimit, String symbol) { |
|
try { |
|
if (word.length() > wordLengthLimit) |
|
return word.substring(0, wordLengthLimit) + symbol; |
|
return word; |
|
} catch (Exception e) { |
|
return word; |
|
} |
|
} |
|
|
|
}
|
|
|