package jspData.util;
import java.io.UnsupportedEncodingException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class MyUtil {
// 문자열의 내용중 원하는 문자열을 다른 문자열로 변환
// String str = replaceAll(str, "\r\n", "<br>"); // 엔터를 <br>로 변환
public String replaceAll(String str, String oldStr, String newStr) throws Exception {
if(str == null)
return "";
Pattern p = Pattern.compile(oldStr);
// 입력 문자열과 함께 매쳐 클래스 생성
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
// 패턴과 일치하는 문자열을 newStr 로 교체해가며 새로운 문자열을 만든다.
while(result) {
m.appendReplacement(sb, newStr);
result = m.find();
}
// 나머지 부분을 새로운 문자열 끝에 덫 붙인다.
m.appendTail(sb);
return sb.toString();
}
//////////////////////////////////////////////////////////////////////////////
실제 jsp 적용로직(엑셀 다운로드시 /가 파일이름으로 적합하지 않아 오류가 남)
이때 /을 -로 바꿔주며 저장되게 함. class이용이 아니라 jsp자체에서 바로 적용
//made in LCS /로 된 문자열 -로 변환 /-> 이문자가 파일이름으로 적합하지 않음.
String prjNms = reqInfo.getString("prjNm");
int prjnum = prjNms.indexOf("/");
if( prjnum >= 0){
try{
Pattern p = Pattern.compile("/");
// 입력 문자열과 함께 매쳐 클래스 생성
Matcher m = p.matcher(prjNms);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
// 패턴과 일치하는 문자열을 newStr 로 교체해가며 새로운 문자열을 만든다.
while(result) {
m.appendReplacement(sb, "-");
result = m.find();
}
// 나머지 부분을 새로운 문자열 끝에 덫 붙인다. [출처] 여러글자로 된 문자열 변환|작성자 태지친구
m.appendTail(sb);
prjNms = sb.toString();
//out.print("prjNmsprjNmsprjNmsprjNmsprjNmsprjNmsprjNmsprjNms"+prjNms);
response.setHeader("Content-Disposition", "attachment; filename="+new String(prjNms.getBytes(),"8859_1")+"("+new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date())+").xls");
}catch(Exception e){}
}else{
prjNms = reqInfo.getString("prjNm");
//out.print("*************************************"+prjNms);
//out.print("********************"+prjNms.indexOf("/"));
response.setHeader("Content-Disposition", "attachment; filename="+new String(prjNms.getBytes(),"8859_1")+"("+new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date())+").xls");
}