JSTL fn:substring()函數(shù)

2020-09-10 17:09 更新

fn:substring()函數(shù)

在JSTL標(biāo)準(zhǔn)標(biāo)簽庫(kù)中,函數(shù)標(biāo)簽庫(kù)fn:substring()方法比較特殊,語(yǔ)法為:

語(yǔ)法1

${fn:substring(<string>,<beginIndex>,<endIndex>)} 

功能:從字符串string中,截取從起始索引值開(kāi)始(包含),到終止索引值結(jié)束(不包含)的子字符串。

  該標(biāo)簽類似Excel中的MID函數(shù),其語(yǔ)法結(jié)構(gòu)為:

語(yǔ)法2

MID(text, start_num, num_chars) 

其中 start_num 相當(dāng)于這里的 beginIndex,只是起始編號(hào)為 1;num_chars 代表子文本的長(zhǎng)度。


對(duì)于fn:substring()方法,網(wǎng)上許多資料以字符串“This is first String.”為例,演示了 ${fn:substring("This is first String.", 5, 15)} 的運(yùn)行結(jié)果,但并未提示“子字符串是不包含終止索引值對(duì)應(yīng)的字符元素”這一要點(diǎn),在此特別強(qiáng)調(diào)一。個(gè)人認(rèn)為,該標(biāo)簽語(yǔ)法結(jié)構(gòu)若改為如下形式更便于理解:

語(yǔ)法3

${fn:substring(<string>,<beginIndex>,<beginIndex>+<substringLength>)} 

這樣,參數(shù)3就變成了子字符串首字符索引值 beginIndex 與子串總長(zhǎng) substringLength 的和,這樣對(duì)于 ${fn:substring("This is first String.", 5, 15)} 就可以理解為:從原字符串索引值為5的字符開(kāi)始,截取10個(gè)字符(=15-5)所形成的子字符串。

注意:

  1. fn:substring 方法是按首尾索引值截取子字符串,且包含子串的首字符索引值,不含尾字符索引值;
  2. 第三參數(shù)可以是 0、小數(shù)、負(fù)數(shù)?!?
    • endIndex = 0,得到空字符串"";
    • endIndex為( 0, +∞ )內(nèi)的小數(shù),截尾取整后得到對(duì)應(yīng)的結(jié)果,即 ${fn:substring(string,5,15.5)}與${fn:substring(string,5,15)} 是等效的; 
    • endIndex∈( -1, 0 ),效果同 endIndex=0,得到空字符串"";
    • endIndex∈( -∞, -1 ],將得到 beginIndex及其后所有內(nèi)容,相當(dāng)于 endIndex=(string.length+1);
  3. 進(jìn)一步測(cè)試可以發(fā)現(xiàn),第二參數(shù)beginIndex也可以是負(fù)數(shù)、小數(shù),但為負(fù)數(shù)時(shí)與為 0 時(shí)等效,小數(shù)也是結(jié)尾取整得到對(duì)應(yīng)結(jié)果;
  4. 原字符串的 index 值是從 0 開(kāi)始的。

下面我們看一個(gè)簡(jiǎn)單的例子:

<body>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
	<h1>JSTL函數(shù)標(biāo)準(zhǔn)標(biāo)簽庫(kù)之fn:substring()方法示例</h1>
	<h3>語(yǔ)法:<%="${fn:substring(<string>, <beginIndex>, <endIndex>)}" %></h3>
	<hr>
	<c:set var="strDemo" value="This is first String."/>
	<h3>原字符串為:<c:out value="${strDemo}"/></h3>
	<h3><%="${fn:substring(strDemo, 5, 0)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, 0)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -0.4)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -0.4)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -0.5)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -0.5)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -0.6)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -0.6)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -1.0)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -1.0)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -1.4)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -1.4)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -1.5)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -1.5)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, -1.6)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, -1.6)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, 15.0)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, 15.0)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, 15.4)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, 15.4)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, 15.5)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, 15.5)}" />"</h3>
	<h3><%="${fn:substring(strDemo, 5, 15.6)}" %> = 
		"<c:out value="${fn:substring(strDemo, 5, 15.6)}" />"</h3>
</body>


結(jié)果:



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)