5.7 函数
5.7 函数
除了定制行为外,JSTL 1.1
和JSTL 1.2
还定义了一套可以在EL
表达式中使用的标准函数。这些函数都集中放在function
标签库中。为了使用这些函数,必须在JSP
的最前面使用以下taglib
指令:
1 | <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" |
调用函数时,要以下列格式使用一个EL
:
1 | ${fn:functionName} |
这里的functionName
是函数名。
大部分函数都用于字符串操作。例如,length
函数用于字符串和集合,并返回集合或者数组中的项目数,或者返回一个字符串的字符数。
5.7.1 contains函数
contains
函数用于测试一个字符串中是否包含指定的子字符串。如果字符串中包含该子字符串,则返回值为true
,否则,返回false
。其语法如下:
1 | contains(string, substring). |
实例
例如,下面这两个EL
表达式都将返回true
:
1 | <c:set var="myString" value="Hello World" /> |
运行结果:
1 | true |
完整代码
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
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
的语法如下:
1 | escapeXml(string) |
例如,下面的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数组
中的所有元素都合并成一个字符串,并用指定的分隔符分开,其语法如下:
1 | join(array, separator) |
如果这个数组为null
,就会返回一个空字符串。
1 | ${fn:join(myArray,",")} |
将返回“my
, world
”。
5.7.7 length函数
length
函数用于返回集合中的项目数,或者字符串中的字符数,其语法如下:
1 | length{input} |
下列的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 | <c:set var="split" value='${fn:split("my,world",",")}'/> |
结果为:
1 | <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
函数将一个字符串转换成它的小写版本,其语法如下:
1 | toLowerCase(string) |
例如,下列的EL
表达式将返回“stella cadente
”:
1 | ${fn:toLowerCase("Stella Cadente")} |
5.7.15 toUpperCase函数
toUpperCase
函数将一个字符串转换成它的大写版本,其语法如下:
1 | toUpperCase(string) |
例如,下列的EL
表达式将返回“STELLA CADENTE
”:
1 | ${fn:toUpperCase("Stella Cadente")} |
5.7.16 trim函数
trim
函数用于删除一个字符串开头和结尾的空白,其语法如下:
1 | trim(string) |
例如,下列的EL
表达式将返回“Stella Cadente
”:
1 | ${fn:trim(" Stella Cadente ")} |