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> → <p> </p>
이런 경우엔 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;
}
반응형