JSTL包含一系列标准函数,大部分是通用的字符串处理函数。
引入:
<%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions” %>
其实跟java代码中处理字符串的方法类似,只是封装好成函数来用了
(使用形式:${ fn:contains(name, searchString) }):
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首位的空白符
为什么fn函数不使用<fn:function()>标签语言,而要放在${ }中使用?
我的理解是fn既然是函数,那就是相当于执行java代码,就好比放在<% %>中的代码一样,所以不使用标签形式而直接执行。因为比如eq、!、==等这些运算符都是放到${}中执行的,所以函数也不例外。
API:boolean contains(java.lang.String, java.lang.String)
例子:${fn:contains(name, searchString)}
API:boolean containsIgnoreCase(java.lang.String, java.lang.String)
例子:${fn:containsIgnoreCase(name, searchString)}
API:boolean endsWith(java.lang.String, java.lang.String)
例子:${fn:endsWith(filename, ".txt")}
API:java.lang.String escapeXml(java.lang.String)
例子:${fn:escapeXml(param:info)}
API:int indexOf(java.lang.String, java.lang.String)
例子:${fn:indexOf(name, "-")}
API:java.lang.String join(java.lang.String[], java.lang.String)
例子:${fn:join(array, ";")}
API:int length(java.lang.Object)//字符串长度或者数组长度
例子:${fn:length(shoppingCart.products)}
API:java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)
例子: ${fn:replace(text, "-", "•")}
API:java.lang.String[] split(java.lang.String, java.lang.String)
例子:${fn:split(customerNames, ";")}
API:boolean startsWith(java.lang.String, java.lang.String)
例子:<c:if test='${fn:startsWith(product.id, "100-")}'>
API:java.lang.String substring(java.lang.String, int, int)
例子:${fn:substring(zip, 6, -1)}
API:java.lang.String substringAfter(java.lang.String, java.lang.String)
例子:${fn:substringAfter(zip, "-")}//对应有个before
API:java.lang.String toLowerCase(java.lang.String)
例子:${fn:toLowerCase(product.name)}//对应有个upperCase
不举了
具体使用:打出这部分${fn: }
,光标留在:后面,使用提示快捷键alt+/
这时候出来给你选:
用法跟java类似!
测试使用:
<body>
<%
request.setAttribute("key", "0123456ABCdefGHK");
List<String> list = new ArrayList<String>();
for(int i =0 ;i<10;i++){
list.add(String.valueOf(i*i));
}
request.setAttribute("list", list);
String[] names = new String[]{"0","1","2","3","2","3","2","3"};
request.setAttribute("names", names);
%>
从后台获取到的参数:key:'${key }'<br><!-- 0123456ABCdefGHK -->
\${fn:contains(key,"dEfg") }:${fn:contains(key,"dEfg") }<br>
\${fn:containsIgnoreCase(key,"dEfg") }:${fn:containsIgnoreCase(key,"dEfg") }<br>
\${fn:endsWith(fn:toLowerCase(key),fn:toLowerCase(DEFGHK)) }:${fn:endsWith(fn:toLowerCase(key),fn:toLowerCase(DEFGHK)) }<br>
\${fn:escapeXml("") }:${fn:escapeXml("") }<br>
\${fn:indexOf("012sdg","d") }:${fn:indexOf("012sdg","d") }<br>
\${fn:join(names,",,") }:${fn:toUpperCase(fn:join(names,",,")) le fn:toUpperCase(fn:join(names,",,")) }<br>
\${fn:length("1234") }:${fn:length("1234") }<br>
\${fn:length(names) }:${fn:length(names) }<br>
\${fn:length(list) }:${fn:length(list) }<br>
\${fn:replace("0s0s0","0","90009") }:${fn:replace("0s0s0","0","90009") }<br>
\${fn:substring(key,5,7) }:${fn:substring(key,5,7) }<br>
\${fn:substringAfter(key,"5") }:${fn:substringAfter(key,"5") }<br>
\${fn:substringBefore(key,"6") }:${fn:substringBefore(key,"6") }<br>
\${fn:trim(" sdfg ") }:${fn:trim("s dfs d") }
</body>