JSTL_function

来源:互联网 发布:北京渠道网络 编辑:程序博客网 时间:2024/06/06 20:19

  • toLowerCase
  • toUpperCase
  • trim
  • escapeXml
  • length
  • split
  • join
  • indexOf
  • contains
  • containsIgnoreCase
  • startsWith
  • endsWith
  • replace
  • substring
  • substringAfter
  • substringBefore

为了简化在 JSP 页面操作字符串,JSTL 中提供了一套 EL 自定义函数,这些函数包含了 JSP 页面制作者经常要用到的字符串操作。

JSTL 中提供的 EL 自定义函数必须在 EL 表达式中使用,例如:${fn:toUpperCase(“www.baidu.com”)}。

toLowerCase

将一个字符串中包含的所有字符转换为小写形式,并返回转换后的字符串,它接收一个字符串类型的参数。

toUpperCase

将一个字符串中包含的所有字符转换为大写形式,并返回转换后的字符串,它接收一个字符串类型的参数。

trim

删除一个字符串的首尾的空格,并返回删除空格后的结果字符串,它接收一个字符串类型的参数。需要注意的是:此函数不能删除字符串中间位置的空格。

escapeXml

将字符串的需要进行转义的 HTML 特殊字符进行 HTML 编码转换,并返回转换后的字符串,它接收一个字符串类型的参数。

例如,运行如下代码的 JSP 文件和浏览器将跳转到 “www.baidu.com” 页面

<meta http-equiv="refresh" content="0;url=http://www.baidu.com">

使用 fn:escapeXml 函数处理上面的代码将直接输出该字符串。

${fn:escapeXml("<meta http-equiv='refresh' content='0;url=http://www.baidu.com'>")}

length

用于返回一个集合数组对象中包含的元素的个数,或返回一个字符串中包含的字符的个数,返回值为 int 类型。它接收一个参数,这个参数可以是 <forEach> 标签的 items 属性支持的任何类型。

如果 fn:length 函数的参数为 null 或者是元素个数为 0 的集合或数组对象,则函数返回 0;如果参数是空字符串,则函数返回 0。

split

将一个字符串分割成字符串数组并返回这个字符串数组。它接收两个字符串类型的参数,第一个参数表示要分割的字符串,第二个参数表示作为分隔符的字符串。

  • fn:split 函数实现 java.util.StringTokenizer 类分割字符串的操作,得到字符串数组中的各字符串元素不包含分隔符本身。
  • 如果第一个参数是空字符串,则 fn:split 函数返回的字符串中只包含空字符串这一个元素。
  • 如果第二个参数是空字符串,则函数返回的字符串数组中只包含源字符串和一个空字符串两个元素

join

以一个字符串作为分隔符,将一个字符串数组中的所有元素合并为一个字符串并返回合并后的结果字符串。它接收两个参数,第一个参数是要操作的字符串数组,第二个参数是作为分隔符的字符串。

如果函数的第二个参数是空字符串,则函数的返回值是不使用任何分隔符将字符串数组中的各元素连接起来的结果字符串。

例如:

  • stringArray:{“www”, “baidu”, “com”},则 fn:join(stringArray, “.”) 返回 “www.baidu.com”
  • fn:join(fn:split(“www,baidu,com”), “.”) 的返回值为字符串 “www.baidu.com”

indexOf

返回指定字符串在一个字符串第一次出现的索引值,返回值类型为 int 类型。它接收两个字符串类型的参数:

  • 如果第一个参数字符串中包含第二个参数字符串,那么,不管第二个参数字符串在第一个参数字符串中出现几次,函数总是返回第一次出现的索引值
  • 如果第一个参数中不包含第二个参数,则函数返回 -1
  • 如果第二个参数为空字符串,则函数返回 0

contains

检测一个字符串是否包含指定的字符串,返回值为布尔类型。它在比较两个字符串是否相等是大小写敏感的。它接收两个字符串类型的参数:

  • 如果第一个参数字符串中包含第二个参数字符串,则函数返回 true,否则返回 false
  • 如果第二个参数的值为空字符串,则函数总是返回 true。

实际上,fn:contains(string, substring) 等价于 fn:indexOf(string, substring) != -1。

containsIgnoreCase

此函数与 contains 的唯一区别只是在比较两个字符串是否相等时对大小写是否敏感,其余完全一致。

fn:containsIgnoreCase(string, substring) 等价于 fn:contains(fn:toUpperCase(string), fn:toUpperCase(substring))

startsWith

用于检测一个字符串是否以指定字符串开始,返回值为布尔类型。它接收两个字符串类型的参数:

  • 如果第一个参数字符串以第二个参数字符串开始,则函数返回 true,否则函数返回 false。
  • 如果第二个参数为空字符串,则函数总是返回 true。

实际上,fn:startsWith(string, prefix) 等价于表达式 fn:indexOf(string, prefix) == 0

endsWith

函数用于检测一个字符串是否是以指定字符串结束的,返回值为布尔类型。它接收两个字符串类型参数:

  • 如果第一个参数字符串以第二个参数字符串结束,则函数返回 true,否则函数返回 false
  • 如果第二个参数为空字符串,则函数总是返回 true

replace

将一个字符串中包含的指定子出神入化串替换为其他指定字符串,并返回替换后的结果字符串。它接收三个字符串类型的参数,第一个表示要操作的源字符串,第二个表示源字符串要被替换的子字符串,第三个表示要被替换成的字符串。

  • 如果第一个参数是空字符串,则函数返回空字符串
  • 如果第二个参数是空字符串,则函数不执行任何替换操作,返回第一个参数指定的字符串
  • 如果第三个参数是空字符串,则函数删除源字符串中包含的第二个参数指定 的子字符串。

源字符串中所有的第二个参数指定的子字符串都被替换成第三个参数指定的字符串,如果替换后的结果字符串中仍包含第二个参数指定的子字符串,则不再进行替换。

  • fn:replace(“www baidu com”, ” “, “.”) 的返回值为字符串 “www.baidu.com”
  • fn:replace(“abcc”, “abc”, “ab”) 的返回值为字符串 “abc”,这个字符串中还包含字符串 “abc”,但不再执行替换操作。

substring

用于截取一个字符串的子字符串并返回截取到的子字符串。它接收三个参数,第一个是用于指定要操作的源字符串,第二个中用于指定截取子字符串开始的索引值,第三个是用于指定截取子字符串结束的索引值,第二个和第三个参数都是 int 类型,其值都从 0 开始且前闭后开。

  • 如果第二个参数的值大于或等于源字符串包含的字符个数,则函数返回空字符串。
  • 如果第二个参数的值小于 0,则将其设置为 0。
  • 如果第三个参数的值小于 0 或大于源字符串中包含的字符个数,则截取到源字符串的结尾的字符。
  • 如果第三个参数的值小于或等于第二个参数的值,则函数返回空字符串。

substringAfter

用于截取并返回一个字符串中的指定子字符串第一次出现之后的子字符串。它接收两个字符串类型的参数,第一个表示要操作的源字符串,第二个表示指定的子字符串,例如,fn:substringAfter(“www.baidu.com”, “.”) 的返回值为字符串 “baidu.com”。

  • 如果第一个参数是空字符串,则函数返回值为空字符串。
  • 如果第二个参数是空字符串,则函数返回值为源字符串。
  • 如果第二个参数不是第一个参数的子字符串,则函数返回空字符串。

substringBefore

用于截取并返回一个字符串中的指定子字符串第一个出现之前的子字符串。它接收两个字符串类型的参数,第一个表示要操作的源字符串,第二个表示指定的子字符串,例如,fn:substringBefore(“www.baidu.com”, “.”) 的返回值为字符串 “www”。

  • 如果第一个参数是空字符串,则函数返回值为空字符串。
  • 如果第二个参数是空字符串,则函数返回值为空字符串。
  • 如果第二个参数不是第一个参数的子字符串,则函数返回空字符串。
0 0