Java 관련/JSTL, EL

[JSP, JSTL] fn function 정리 - 2

Wings of Freedom 2024. 4. 9. 11:11

jstl 내장함수

JSTL functions은 JSTL에서 제공하는 각종 함수를 사용해서 문자열이나, 컬렉션들을 처리함.
fn태그는 단독으로 사용할 수 없고 EL 표현식 내에서 사용해야함.
like ${fn:length(...)}

jsp 페이지 시작점에 다음 태그로 선언 해줘야 사용 할 수 있음.

  <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 


 

boolean contains(String sting, String substring)

string이 substring을 포함하면 return true.

boolean containsIgnoreCase(String string, String substring)

대소문자에 관계없이, string이 substring을 포함하면 return true.

 

  ${fn:contains("helloworld", "world")} // true

  ${fn:containsIgnoreCase("hello world!", "WoRLd")} // true

 


 

boolean startsWith(String string, String prefix)

string이 prefix로 시작하면 return true.

boolean endsWith(String string, String substring)

string이 suffix로 끝나면 return true.

 

  ${fn:startsWith("hello world!", "ld!")} // false

  ${fn:endsWith("hello world!", "ld!")} // true

 


 

String escapeXml(String string)

string에서 XML, HTML의 < >& ' " 문자들을 각각 < > & ' "로 치환하여 리턴.

 

  <c:out value="${fn:escapeXml('<>')}"/> // &lt;&gt;

 


 

int indexOf(String string, String substring)

string에서 substring이 처음으로 나타나는 인덱스 리턴.

 

  ${fn:indexOf("abcdefg", "f")} // 5

 


 

String[] split(String string, String separator)

string 내의 문자열을 separator에 따라 잘라내서 잘려진 문자열들을 배열로 리턴.

String join(String[] strings, String separator)

배열 요소들을 separator를 구분자로 하여 모두 연결해서 리턴.

 

// 예시를 위한 배열 생성
<c:set var="texts" value="${fn:split('Hi My name is waldo', ' ')}"/>
<c:out value="${fn:join(texts, '-')}"/> // Hi-My-name-is-waldo

 


 

int length(Object item)

item이 배열이나 컬렉션이면 요소의 개수를, 문자열이면 문자의 개수를 리턴.

 

<c:set var="texts" value="${fn:split('Hi My name is waldo', ' ')}"/>

${fn:length(texts)} // 5

${fn:length("123456")} // 6

 


 

String replace(String string, String before, String after)

string 내에 있는 before 문자열을 after 문자열로 모두 바꿔서 리턴.

 

${fn:replace("hi hello", "hello", "hi")} // hi hi

// replace 함수는 HTML에서 공백과 줄바꿈을 표현할 때 사용할 수 있다.
${fn:replace("hell            o          o       ~", " ", "&nbsp;")} // hell            o          o       ~

<% pageContext.setAttribute("enter","\n"); %>
${fn:replace(info.text, enter, '<br/>') // 엔터처리

<% pageContext.setAttribute("enter","\n"); %>
${fn:replace(fn:replace(fn:escapeXml(info.content_txt), enter, '<br/>') , ' ', '&nbsp;')} // 엔터와 공백 처리

 


 

String substring(String string, int begin, int end)

string에서 begin 인덱스에서 시작해서 end 인덱스에 끝나는 부분의 문자열을 리턴.

String substringAfter(String string, String substring)

string에서 substring이 나타나는 이후의 부분에 있는 문자열을 리턴.

String substringBefore(String string, String substring)

string에서 substring이 나타나기 이전의 부분에 있는 문자열을 리턴.

 

${fn:substring(text, 3, 19)} // My name is waldo

${fn:substringAfter(text, "Hi ")} // My name is waldo

${fn:substringBefore(text, "waldo")} // Hi My name is

 


 

String toLowerCase(String string)

string을 모두 소문자로 치환.

String toUpperCase(String string)

string을 모두 대문자로 치환.

 

<c:set var="text" value="Hi My name is waldo"/>

${fn:toLowerCase(text)} // hi my name is waldo

${fn:toUpperCase(text)} // HI MY NAME IS WALDO

 


 

String trim(String string)

string 앞뒤의 공백을 모두 제거.

 

<c:set var="text" value="          blank spcae          "/>
${fn:length(text)}  // 31

<c:set var="text" value="${fn:trim(text)}"/>
${fn:length(text)}  // 11

 

출처 : https://jeaha.dev/79