jsp用到的jstl标签语言库之function标签库(三)

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, "-", "&#149;")}

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>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值