9.7 Functions 標籤庫
稱呼Functions標籤庫爲標籤庫,倒不如稱呼其爲函數庫來得更容易理解些。因爲Functions標籤庫並沒有提供傳統的標籤來爲JSP頁面的工作服務,而是被用於EL表達式語句中。在JSP2.0規範下出現的Functions標籤庫爲EL表達式語句提供了許多更爲有用的功能。Functions標籤庫分爲兩大類,共16個函數。
長度函數:fn:length
字符串處理函數:fn:contains、fn:containsIgnoreCase、fn:endsWith、fn:escapeXml、fn:indexOf、fn:join、fn:replace、fn:split、fn:startsWith、fn:substring、fn:substringAfter、fn:substringBefore、fn:toLowerCase、fn:toUpperCase、fn:trim
以下是各個函數的用途和屬性以及簡單示例。
9.7.1 長度函數 fn:length 函數
長度函數fn:length的出現有重要的意義。在JSTL1.0中,有一個功能被忽略了,那就是對集合的長度取值。雖然java.util.Collection接口定義了size方法,但是該方法不是一個標準的JavaBean屬性方法(沒有get,set方法),因此,無法通過EL表達式“ ${collection.size} ”來輕鬆取得。
fn:length函數正是爲了解決這個問題而被設計出來的。它的參數爲input,將計算通過該屬性傳入的對象長度。該對象應該爲集合類型或String類型。其返回結果是一個int類型的值。下面看一個示例。
<%ArrayList arrayList1 = new ArrayList();
arrayList1.add("aa");
arrayList1.add("bb");
arrayList1.add("cc");
%>
<%request.getSession().setAttribute("arrayList1", arrayList1);%>
${fn:length(sessionScope.arrayList1)}
假設一個ArrayList類型的實例“ arrayList1 ”,併爲其添加三個字符串對象,使用fn:length函數後就可以取得返回結果爲“ 3 ”。
9.7.2 判斷函數 fn:contains 函數
fn:contains函數用來判斷源字符串是否包含子字符串。它包括string和substring兩個參數,它們都是String類型,分佈表示源字符串和子字符串。其返回結果爲一個boolean類型的值。下面看一個示例。
${fn:contains("ABC", "a")}<br>
${fn:contains("ABC", "A")}<br>
前者返回“ false ”,後者返回“ true ”。
9.7.3 fn:containsIgnoreCase函數
fn:containsIgnoreCase函數與fn:contains函數的功能差不多,唯一的區別是fn:containsIgnoreCase函數對於子字符串的包含比較將忽略大小寫。它與fn:contains函數相同,包括string和substring兩個參數,並返回一個boolean類型的值。下面看一個示例。
${fn:containsIgnoreCase("ABC", "a")}<br>
${fn:containsIgnoreCase("ABC", "A")}<br>
前者和後者都會返回“ true ”。
9.7.4 詞頭判斷函數 fn:startsWith 函數
fn:startsWith函數用來判斷源字符串是否符合一連串的特定詞頭。它除了包含一個string參數外,還包含一個subffx參數,表示詞頭字符串,同樣是String類型。該函數返回一個boolean類型的值。下面看一個示例。
${fn:startsWith ("ABC", "ab")}<br>
${fn:startsWith ("ABC", "AB")}<br>
前者返回“ false ”,後者返回“ true ”。
9.7.5 詞尾判斷函數 fn:endsWith 函數
fn:endsWith函數用來判斷源字符串是否符合一連串的特定詞尾。它與fn:startsWith函數相同,包括string和subffx兩個參數,並返回一個boolean類型的值。下面看一個示例。
${fn:endsWith("ABC", "bc")}<br>
${fn:endsWith("ABC", "BC")}<br>
前者返回“ false ”,後者返回“ true ”。
9.7.6 字符實體轉換函數 fn:escapeXml 函數
fn:escapeXml函數用於將所有特殊字符轉化爲字符實體碼。它只包含一個string參數,返回一個String類型的值。
9.7.8 字符匹配函數 fn:indexOf 函數
fn:indexOf函數用於取得子字符串與源字符串匹配的開始位置,若子字符串與源字符串中的內容沒有匹配成功將返回“ -1 ”。它包括string和substring兩個參數,返回結果爲int類型。下面看一個示例。
${fn:indexOf("ABCD","aBC")}<br>
${fn:indexOf("ABCD","BC")}<br>
前者由於沒有匹配成功,所以返回-1,後者匹配成功將返回位置的下標,爲1。
9.7.9 分隔符函數 fn:join 函數
fn:join函數允許爲一個字符串數組中的每一個字符串加上分隔符,並連接起來。它的參數、返回結果和描述如表9.25所示:
表9.25 fn:join函數
參數
|
描述
|
array
|
字符串數組。其類型必須爲String[]類型
|
separator
|
分隔符。其類型必須爲String類型
|
返回結果
|
返回一個String類型的值
|
下面看一個示例。
<% String[] stringArray = {"a","b","c"}; %>
<%request.getSession().setAttribute("stringArray", stringArray);%>
${fn:join(sessionScope.stringArray,";")}<br>
定義數組並放置到Session中,然後通過Session得到該字符串數組,使用fn:join函數並傳入分隔符“ ; ”,得到的結果爲“ a;b;c ”。
9.7.10 替換函數 fn:replace 函數
fn:replace函數允許爲源字符串做替換的工作。它的參數、返回結果和描述如表9.26所示:
表9.26 fn:replace函數
參數
|
描述
|
inputString
|
源字符串。其類型必須爲String類型
|
beforeSubstring
|
指定被替換字符串。其類型必須爲String類型
|
afterSubstring
|
指定替換字符串。其類型必須爲String類型
|
返回結果
|
返回一個String類型的值
|
下面看一個示例。
${fn:replace("ABC","A","B")}<br>
將“ ABC ”字符串替換爲“ BBC ”,在“ ABC ”字符串中用“ B ”替換了“ A ”。
9.7.11 分隔符轉換數組函數 fn:split 函數
fn:split函數用於將一組由分隔符分隔的字符串轉換成字符串數組。它的參數、返回結果和描述如表9.27所示:
表9.27 fn:split函數
參數
|
描述
|
string
|
源字符串。其類型必須爲String類型
|
delimiters
|
指定分隔符。其類型必須爲String類型
|
返回結果
|
返回一個String[]類型的值
|
下面看一個示例。
${fn:split("A,B,C",",")}<br>
將“ A,B,C ”字符串轉換爲數組{A,B,C}。
9.7.12 字符串截取函數 fn:substring 函數
fn:substring函數用於截取字符串。它的參數、返回結果和描述如表9.28所示:
表9.28 fn:substring函數
參數
|
描述
|
string
|
源字符串。其類型必須爲String類型
|
beginIndex
|
指定起始下標(值從0開始)。其類型必須爲int類型
|
endIndex
|
指定結束下標(值從0開始)。其類型必須爲int類型
|
返回結果
|
返回一個String類型的值
|
下面看一個示例。
${fn:substring("ABC","1","2")}<br>
截取結果爲“ B ”。
9.7.14 起始到定位截取字符串函數 fn:substringBefore 函數
fn:substringBefore函數允許截取源字符從開始到某個字符串。它的參數和fn:substringAfter函數相同,不同的是substring表示的是結束字符串。下面看一個示例。
${fn:substringBefore("ABCD","BC")}<br>
截取的結果爲“ A ”。
9.7.15 小寫轉換函數 fn:toLowerCase 函數
fn:toLowerCase函數允許將源字符串中的字符全部轉換成小寫字符。它只有一個表示源字符串的參數string,函數返回一個String類型的值。下面看一個示例。
${fn:toLowerCase("ABCD")}<br>
轉換的結果爲“ abcd ”。
9.7.16大寫轉換函數 fn:toUpperCase 函數
fn:toUpperCase函數允許將源字符串中的字符全部轉換成大寫字符。它與fn:toLowerCase函數相同,也只有一個String參數,並返回一個String類型的值。下面看一個示例。
${fn:toUpperCase("abcd")}<br>
轉換的結果爲“ ABCD ”。
9.7.17空格刪除函數 fn:trim 函數
fn:trim函數將刪除源字符串中結尾部分的“空格”以產生一個新的字符串。它與fn:toLowerCase函數相同,只有一個String參數,並返回一個String類型的值。下面看一個示例。
${fn:trim("AB C ")}D<br>
轉換的結果爲“ AB CD ”,注意,它將只刪除詞尾的空格而不是全部,因此“ B ”和“ C ”之間仍然留有一個空格。
以上內容轉自網絡:http://www.javawind.net/help/html/jstl_el.htm
|