// 이 태그를 없애야지만 한글에서 표가 일정하게 나옵니다.
String result = form;
StringBuffer sInsertedData = new StringBuffer();
int tdStart = 0;
int tdEnd = 0;
int pStart = 0, pEnd = 0;
while (true) {
tdStart = result.indexOf("
", tdStart + 1);
if (tdEnd == -1)
break;
pStart = result.indexOf(" ", pStart + 2);
if (pEnd == -1)
break;
sInsertedData.append(result.substring(0, pStart));
result = result.substring(pEnd + 1, result.length());
}
sInsertedData.append(result);
return sInsertedData.toString();// .replaceAll("border=0", "border=1");//.replaceAll("height=", "");
}
// ///////////////////////////// Html 삭제 로직 ///////////////////////////////
public String getDeleteTable(String form, int tableDelete) {// 테이블을 삭제 하기 위한 로직.
// ban lower case form = form.toLowerCase();
StringBuffer tmp;
int stTABLE = 0;
int edTABLE = 0;
stTABLE = form.indexOf(" ", scTABLE);
int stTD = form.indexOf(" stTD) {
edTR = stTR + 1;
stTR = stTD;
} else {
edTR = form.indexOf(" | edTR + 5) {
stTR = stTD;
}
tmp = new StringBuffer(form);
tmp = tmp.delete(stTR, edTR + 5);
return tmp.toString();
}
public String getDeleteSubject2(String form) {
StringBuffer tmp;
// ban lower case form = form.toLowerCase();
int fiTABLE = form.indexOf(" ", scTABLE);
int stTD = form.indexOf(" | stTD) {
edTR = stTR + 1;
stTR = stTD;
} else {
edTR = form.indexOf(" | edTR + 5) {
stTR = stTD;
}
tmp = new StringBuffer(form);
tmp = tmp.delete(stTR, edTR + 5);
return tmp.toString();
}
// ///////////////////////////// Html 추가 로직 ///////////////////////////////
// " + sFileName + "";
}
}
// //////// getData
// //////////////////////////////////////////////////////////////////////////////////////////////////
public static String getData(String form) {
if (form == null)
return null;
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
StringBuffer sb = new StringBuffer();
String data = "";
int tableStart = 0;
int tableEnd = 0;
int headStart = 0;
headStart = form.indexOf(" 0) {
sb2.append(form.substring(headStart, form.length()));
form = sb2.toString();
}
while (true) {
tableStart = form.indexOf("", tableStart + 1);
if (tableEnd == -1)
break;
sb1.append(form.substring(0, tableStart + 6));
sb1.append(">");
form = form.substring(tableEnd + 1, form.length());
}
sb1.append(form);
data = sb1.toString();
int tdStart = 0;
int tdEnd = 0;
int closetdStart = 0;
while (true) {
// if ( index > itemIndex.length-1 ) break;
tdStart = data.indexOf("", tdStart + 1);
if (tdEnd == -1)
break;
closetdStart = data.indexOf(" | ", tdEnd + 1);
if (closetdStart == -1)
break;
sb.append(data.substring(0, tdEnd));
sb.append(" .>");
sb.append(data.substring(tdEnd + 1, closetdStart));
sb.append("");
data = data.substring(closetdStart + 5, data.length());
}
sb.append(data);
return sb.toString();
}
// // 개행을
로 바꾸기 위한 메쏘드
//v2. 5.static final 필드 변조 가능성 : Update by KWON,HAN
//private는 같은 클래스 내에서만 호출이 가능하므로 접근제한이 없는 public으로 하고 final을 사용하지 않는다
// public static final String toBR(String tmp2) {
public static String toBR(String tmp2) {
//==========================================================
LOG.debug("v2. 5.static final 필드 변조 가능성 : HtmlUtil.toBR() Not Test {}", tmp2);
String tmp9 = "";
if (tmp2.indexOf("\n") >= 1) {
StringTokenizer stk = new StringTokenizer(tmp2, "\n");
int stkCnt = stk.countTokens();
for (int fx = 1; fx < stkCnt; fx++) {
if (fx == 1) {
tmp9 = (stk.nextToken()).trim();
} else {
tmp9 += "
" + (stk.nextToken()).trim();
}
}
tmp9 += "
" + (stk.nextToken()).trim();
tmp2 = tmp9;
}
return tmp2;
}
public static String getTables(String html) throws NullPointerException {
return getTables(new StringBuffer(html));
}
public static String getTables(StringBuffer html) throws NullPointerException {
int count = 0;
int strIndex = 0;
int endIndex = 0;
String stTag = " 0) {
strIndex = html.indexOf(stTag, strIndex + stTag.length());
} else {
strIndex = html.indexOf(stTag, strIndex);
}
endIndex = html.indexOf(edTag, strIndex);
if (strIndex == -1 || endIndex == -1)
break;
// if(count > 0) tablesBuf.append("\n\n");
if (count > 0)
tablesBuf.append("\n\n");
tablesBuf.append((html.substring(strIndex, endIndex + edTag.length())).toString());
}
return tablesBuf.toString();
}
// html의 tag만 소문자료 변경
public static String toLowerCase(String html) {
if (MString.isNull(html))
return html;
return toLowerCase(new StringBuffer(html));
}
public static String toLowerCase(StringBuffer htmlBuff) {
String startStr = "<";
String endStr = ">";
int startIndex = -1;
int endIndex = -1;
String tag = "";
while (true) {
startIndex = htmlBuff.indexOf(startStr, endIndex);
if (startIndex == -1)
break;
endIndex = htmlBuff.indexOf(endStr, startIndex);
if (endIndex == -1)
break;
tag = htmlBuff.substring(startIndex, endIndex).toLowerCase();
htmlBuff.delete(startIndex, endIndex);
htmlBuff.insert(startIndex, tag);
}
return htmlBuff.toString();
}
// ////////////////////////// HTML 규칙 준수 여부 판탄및 부족한 TAG 자동 추가 ////////////////////////////
// 1)
public static String addTABLE(String form) {
return addTABLE(new StringBuffer(form));
}
public static String addTABLE(StringBuffer form) {
// ban lower case form = form.toLowerCase();
String strTag = "= 0 && strIndex2 < endIndex) {
form = form.insert(strIndex2, inTag);
} else if (strIndex3 >= 0 && strIndex3 < endIndex) {
form = form.insert(strIndex3, inTag);
}
}
return form.toString();
}
// 2) 한글 97 다음에 이 없음, 그리고
이 없음 자동 추가 해줌
public static String addTR(String form) {
// form = form.toLowerCase();
return addOpenTR(form);
}
public static String addTR(StringBuffer form) {
return addOpenTR(form);
}
// 2-1) 한글 97 다음의 이 없음 그래서
추가
private static String addOpenTR(String form) {
return addOpenTR(new StringBuffer(form));
}
private static String addOpenTR(StringBuffer form) {
String stTABLE = " -1 && (stTRIndex > stTDIndex)) {
form.insert(stTDIndex, inTR);
}
stTABLEIndex += stTABLE.length();
}
return addCloseTR(form);
}
private static String addCloseTR(StringBuffer form) {
String stTR = "";
String edTD = "";
String edTABLE = "
";
String inTR = "
\n";
int stTRIndex = -1;
int nextTRIndex = -1;
int edTDIndex = -1;
int edTABLEIndex = -1;
while (true) {
stTRIndex = form.indexOf(stTR, stTRIndex);
nextTRIndex = form.indexOf(stTR, stTRIndex + stTR.length());
edTABLEIndex = form.indexOf(edTABLE, stTRIndex);
edTDIndex = form.indexOf(edTD, stTRIndex);
if (stTRIndex == -1)
break;
if (stTRIndex > -1 && edTDIndex > -1 && nextTRIndex > 0) {
form.insert(nextTRIndex, inTR);
stTRIndex = nextTRIndex;
} else if (stTRIndex > -1 && edTDIndex > -1 && nextTRIndex == -1 && edTABLEIndex > stTRIndex) {
form.insert(edTABLEIndex, inTR);
stTRIndex = edTABLEIndex;
}
}
return form.toString();
}
public static String toHtml(String str) {
CharArrayReader chr;
BufferedReader inDesc;
String line;
String newDesc = "";
try {
// detalDesc를 보기 좋게 변경
chr = new CharArrayReader(str.toCharArray());
inDesc = new BufferedReader(chr);
//v2 36.경쟁조건 : 검사시점과 사용시점 (File)_CWE-367 : Update by YOUNGJUN,CHO
/*
line = inDesc.readLine();
while (line != null) {
newDesc += "" + line + "
";
line = inDesc.readLine();
}
*/
while ((line = inDesc.readLine()) != null) {
newDesc += "" + line + "
";
}
//================================================
str = newDesc;
inDesc.close();
return str;
} catch (IOException ex) {
System.err.println("error message : " + ex);
return str;
}
}
}