2014-09-22 108 views
2

我想分裂一個字符串使用。 (週期與空間),但由於某種原因,它在JSTL如何使用分割字符串。 (期間與空間)作爲分隔符JSTL

input: This is a sample text. Just to check the split. 

下面的語句拆分使用句號(。)作爲delimter將按預期值簡化版,工作,

<c:set var="descArray" value="${fn:split(desc_highlighted,'.')}"/> 
<c:forEach var="indexVal" items="${descArray}"> 
      <c:set var="descValue" value="${descValue} ${indexVal} ."/> 
</c:forEach 

output: This is a sample text. Just to check the split. 

如果我修改以配合空間週期的聲明(。),這句話是越來越分裂每個間距

<c:set var="descArray" value="${fn:split(desc_highlighted,'. ')}"/> 
<c:forEach var="indexVal" items="${descArray}"> 
      <c:set var="descValue" value="${descValue} ${indexVal} ."/> 
</c:forEach 

output: This . is . a . sample . text . Just . to . check . the . split . 

有人可以讓我知道如果我做錯了什麼?

回答

1

這裏的問題是,fn:split()的第二個參數的工作方式類似於字符數組而不是字符串。所以它在時間段上分裂,導致數組大於預期。處理這種情況的一種方法是使用fn:replace()用一個字符替換所有出現的". "。然後將返回的字符串傳遞給fn:split()。這個例子使用了一個管道。

<c:set var="descArray" 
     value="${fn:split(fn:replace(desc_highlighted, '. ', '|'),'|')}"/>