Java

컬렉션으로 구분자 더하기 ( Whitespace 거르기 )

혜춘 2020. 3. 12. 19:20
728x90

jsp에서 받아온 필수값 내에 Whitespace만 존재하는 경우 메시지를 출력하는 방법입니다.
먼저 원하는 데이터를 List에 담고 StringUtils 에서 제공해주는 join을 활용하여 작업하였습니다.

import java.util.ArrayList;
import org.apache.commons.lang3.StringUtils;

public String replace(VO vo){

   ArrayList<String> msgList = new ArrayList<String>();
   
   if (StringUtils.isEmpty(vo.getTitle().trim())) {
      msgList.add("제목");
   }
   if (StringUtils.isEmpty(vo.getContent().trim())) {
      msgList.add("내용");
   }
   
   String msg = StringUtils.join(msgList, ", ");
   return msg;
}

만약 vo안에 title 과 content 내용이 모두 없다면 msg="제목, 내용" 이 출력됩니다.


번외로 에디터를 사용하는 경우에 처리하는 방법을 소개하도록 하겠습니다. content를 에디터로 받아와서 태그가 escape로 치환 후 들어오는 경우가 발생합니다.

ex) <p> </p> → &lt;p&gt; &lt;/p&gt;

이런 경우엔 Whitespace만 존재하더라도 null이 아니기 때문에 공백을 제거해도 소용이 없습니다.
따라서 unescape 작업을 통해 태그로 변환을 해줍니다. 
그 다음에 정규식을 사용하여 변환된 태그를 제거해줍니다.
그러면 들어있는 데이터가 공백인지 아닌지 판별을 할 수 있습니다.

import java.util.ArrayList;
import org.apache.commons.lang3.StringUtils;
import org.unbescape.html.HtmlEscape;

public String replace(VO vo){

   ArrayList<String> msgList = new ArrayList<String>();
   
   if (StringUtils.isEmpty(vo.getTitle().trim())) {
      msgList.add("제목");
   }
   if (StringUtils.isNotEmpty(vo.getContent())) {
      String content = HtmlEscape.unescapeHtml(vo.getContent());
      content = content.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "").replaceAll("\\p{Z}", "");
      if (StringUtils.isEmpty(content)) {
         msgList.add("내용");
      }
   }
   
   String msg = StringUtils.join(msgList, ", ");
   return msg;
}
반응형