package org.ezF.tools; import java.util.HashMap; /** * 텍스트 변경을 지원하는 클래스 * * @version ezFrame 1.03 * Copyright 2004 by Han Nan Young * All rights reserved. * 작성일 : 2004/10/13 * @author 한난영, hny76@naver.com */ public class text { /** * 주어진 문자을 주어진 길이로 나누어서 배열로 리턴해준다. * article : 4500자의 문자이고 * parseLang : 1000자로 나눈다면 * 5개의 String배열이 리턴 된다. * @param article * @param parseLang * @return */ public static String[] StringParseToArray(String article, int parseLang) { String[] returnArray = new String[StringParseLang(article,parseLang)]; for(int i=0; i < StringParseLang(article,parseLang); i++) { if(StringParseLang(article,parseLang) == 1) { returnArray[i] = new String(article); } else if(StringParseLang(article,parseLang) == i+1) { returnArray[i] = new String(article.substring(i*parseLang)); } else { returnArray[i] = new String(article.substring(i*parseLang,(i+1)*parseLang)); } } return returnArray; } /** * * @param article * @param parseLang * @return */ public static int StringParseLang(String article, int parseLang) { if(article.length()%parseLang !=0) { return article.length()/parseLang+1; } else { return article.length()/parseLang; } } /** * 원본 텍스트에 비교문자열가 포함 되어있는지 여부을 확인한다.<br> * 비교문자는 대소문자를 구분하지 않는다. * * @param originalText 원본 텍스트 * @param parseText 비교문자열 * @return 포함되어있는 경우 ture */ public static boolean isLikeText(String originalText, String parseText) { if(originalText.toLowerCase().lastIndexOf(".jsp") > -1) return false; else return true; } /** * * @param s * @param args * @return */ public static String replace(String s, HashMap args) { StringBuffer content = new StringBuffer(); while( s.length() > 0 ) { int position = s.indexOf("[$$"); if ( position == -1 ) { content.append(s); break; } if ( position != 0 ) content.append(s.substring(0,position)); if ( s.length() == position + 3 ) break; String remainder = s.substring(position+3); int markEndPos = remainder.indexOf("$$]"); if ( markEndPos == -1 ) break; String argname = remainder.substring(0, markEndPos).trim(); String value = (String)args.get(argname); if ( value != null ) content.append(value); if ( remainder.length() == markEndPos + 3 ) break; s = remainder.substring(markEndPos + 3); } return content.toString(); } /** * 원래의 문장중에 특정 문자열을 다른문자열로 바꾼다. * @param str 문자열 * @param o_str 치환대상의 문자열 * @param n_str 치환대상을 치환할 문자열 * @return 변환된 문자열 */ public static String replace(String str, String o_str, String n_str){ String rv = new String(str); int fromIdx = 0; int toIdx = rv.length(); int pointIdx = 0; int skip_len = o_str.length(); int skip_len2 = n_str.length(); try{ while ((fromIdx <toIdx) && ((pointIdx = rv.indexOf(o_str, fromIdx)) > -1) ){ rv = rv.substring(0, pointIdx) + n_str + rv.substring(pointIdx + skip_len); fromIdx = skip_len2 + pointIdx ; toIdx = rv.length(); } }catch(Exception e){} return rv; } /** * 원래의 문장중에 특정 문자열을 다른문자열로 바꾼다. * @param text 문자열 * @param from 치환대상의 char * @param to 치환대상을 치환할 문자열 * @return 변환된 문자열 */ public static String replace(String text, char from, String to) { text = Util.nullCheck(text); int index=0; StringBuffer sb = new StringBuffer(); for(int i=0; i < text.length(); i++) { char c = text.charAt(i); if(c == from) sb.append(to); else sb.append(c); } return sb.toString(); } /** * DB에서 가져온 값을 html로 뿌려줄때에 줄바꿈을 한다.<br> * 문자열중 엔터값을 <BR>로 바꾸어준다. * 공백은 html 공백으로 치환 * @param str 바꿀려는 문자열 * @return html code style 문자열 */ public static String makeTag(String str){ String rv = ""; rv = replace(str, " ", " "); rv = replace(rv, "\n", "<br>"); return rv; } } |