01.JAVA/Java2009. 3. 23. 11:37
반응형

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");
 }

Posted by 1010