5.7 函数 除了定制行为外,JSTL 1.1
和JSTL 1.2
还定义了一套可以在EL
表达式中使用的标准函数 。这些函数都集中放在function
标签库中。为了使用这些函数,必须在JSP
的最前面使用以下taglib
指令:
1 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
调用函数时,要以下列格式使用一个EL
:
这里的functionName
是函数名。大部分函数都用于字符串操作 。例如,length
函数用于字符串和集合,并返回集合或者数组中的项目数,或者返回一个字符串的字符数。
5.7.1 contains函数 contains
函数用于测试一个字符串中是否包含指定的子字符串 。如果字符串中包含该子字符串,则返回值为true
,否则,返回false
。其语法如下:
1 contains(string, substring).
实例 例如,下面这两个EL
表达式都将返回true
:
1 2 3 4 <c:set var ="myString" value="Hello World" /> <!-- 判断字符串有界变量`myString`中是否包含`Hello` --> ${fn:contains(myString, "Hello" )} <br> ${fn:contains("Stella Cadente" , "Cadente" )}
运行结果:
完整代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > <title>function Test</title> </head> <body> <c:set var ="myString" value="Hello World" /> <!-- 判断字符串有界变量`myString`中是否包含`Hello` --> ${fn:contains(myString, "Hello" )} <br> ${fn:contains("Stella Cadente" , "Cadente" )} </body> </html>
5.7.2 containsIgnoreCase函数 containsIgnoreCase
函数与contains
函数相似,但测试是区分大小写的,其语法如下:
1 containsIgnoreCase(string, substring)
例如,下列的EL
表达式将返回true
:
1 ${fn:containsIgnoreCase("Stella Cadente" , "CADENTE" )}
5.7.3 endsWith函数 endsWith
函数用于测试一个字符串是否以指定的后缀结尾 ,其返回值是一个Boolean
,语法如下:
1 endsWith(string, suffix)
例如,下列的EL
表达式将返回true
。
1 ${fn:endsWith("Hello World" , "World" )}
5.7.4 escapeXml函数 escapeXml
函数用于给String
编码。这种转换与out
标签将其escapeXml
属性设为true
一样。escapeXml
的语法如下:
例如,下面的EL
表达式:
1 ${fn:escapeXml("Use<br/>to change lines" )}
将被渲染成:
1 Use <br/> to change lines
这样浏览器就不会把<br/>
当成换行符,而是显示<br/>
这个字符串本身。
5.7.5 indexOf函数 indexOf
函数返回指定子字符串在某个字符串中第一次出现时的索引 。**如果没有找到指定的子字符串,则返回−1
**。其语法如下:
1 indexOf(string, substring)
例如,下列的EL
表达式将返回7:
1 ${fn:indexOf("Stella Cadente" , "Cadente" )}
5.7.6 join函数 join
函数将一个String数组
中的所有元素都合并成一个字符串 ,并用指定的分隔符分开 ,其语法如下:
如果这个数组为null
,就会返回一个空字符串。
将返回“my
, world
”。
5.7.7 length函数 length
函数用于返回集合中的项目数,或者字符串中的字符数,其语法如下:
下列的EL
表达式将返回14:
1 ${fn:length("Stella Cadente" , "Cadente" )}
5.7.8 replace函数 replace
函数将字符串中出现的所有beforeString
用afterString
替换,并返回结果,其语法如下:
1 replace(string, beforeSubstring, afterSubstring)
例如,下列的EL
表达式将返回“StElla CadEntE
”:
1 ${fn:replace("Stella Cadente" , "e" , "E" )}
5.7.9 split函数 split
函数用于将一个字符串分离成一个子字符串数组。它的作用与join
相反 。例如,下列代码是分离字符串“my,world
”,并将结果保存在有界变量split
中。随后,利用forEach
标签将split
格式化成一个HTML
表:
1 2 3 4 5 6 <c:set var ="split" value='${fn:split("my,world",",")}' /> <table> <c:forEach var ="substring" items="${split}" > <tr><td>${substring}</td></tr> </c:forEach> </table>
结果为:
1 2 3 4 <table> <tr><td>my</td></tr> <tr><td>world</td></tr> </table>
5.7.10 startsWith函数 substring
函数用于返回一个从指定的起始索引(含)到指定的终止索引的子字符串,其语法如下:
1 substring(string, beginIndex, endIndex)
下列的EL
表达式将返回“Stel
”:
1 ${fn:substring("Stella Cadente" , 0 , 4 )}
5.7.12 substringAfter函数 substringAfter
函数用于返回指定子字符串第一次出现后
的字符串部分 ,其语法如下:
1 substringAfter(string, substring)
例如,下列的EL
表达式将返回“lla Cadente
”:
1 ${fn:substringAfter("Stella Cadente" , "e" )}
5.7.13 substringBefore函数 substringBefore
函数用于返回指定子字符串第一次出现前的字符串部分,其语法如下:
1 substringBefore(string, substring)
例如,下列的EL
表达式将返回“St
”:
1 ${fn:substringBefore("Stella Cadente" , "e" )}
5.7.14 toLowerCase函数 toLowerCase
函数将一个字符串转换成它的小写版本,其语法如下:
例如,下列的EL
表达式将返回“stella cadente
”:
1 ${fn:toLowerCase("Stella Cadente" )}
5.7.15 toUpperCase函数 toUpperCase
函数将一个字符串转换成它的大写版本,其语法如下:
例如,下列的EL
表达式将返回“STELLA CADENTE
”:
1 ${fn:toUpperCase("Stella Cadente" )}
5.7.16 trim函数 trim
函数用于删除一个字符串开头和结尾的空白,其语法如下:
例如,下列的EL
表达式将返回“Stella Cadente
”:
1 ${fn:trim(" Stella Cadente " )}