2012-10-05 76 views
0

我與JSTL很新,所以需要的東西你的幫助。字符串替換在JSTL不會發生特定字符串

我有一個名爲「專業」的字符串,在我檢查,如果一個特定的字符串存在,如果是這樣,我查馬克與之對應的輸入,然後用空字符串替換它。

<input type="checkbox" name="specialities" value="OB/Gyn" 
<c:if test="${fn:containsIgnoreCase(asc_details.specialities, 'OB/Gyn')}"> 
<c:set var="specialities" value="${fn:replace(specialities,'OB/Gyn','')}"></c:set> 
<c:out value="${'checked'}"/></c:if> 
/>&nbsp;OB/Gyn 

<input type="checkbox" name="specialities" value="Plastic/reconstructive" 
<c:if test="${fn:containsIgnoreCase(specialities, 'Plastic/reconstructive')}"> 
<c:set var="specialities" value="${fn:replace(specialities,'Plastic/reconstructive','')}"></c:set> 
<c:out value="${'checked'}"/></c:if> 
/>&nbsp;Plastic/reconstructive 

它第一個匹配字符串「OB /婦科」的偉大工程,並與空字符串代替它,但它不會與空字符串替換爲「塑料/重建」。我無法弄清楚爲什麼會發生這種情況。請幫忙。

回答

1

有可能的情況下,靈敏度這裏的bug。所述containsIgnoreCase()測試是不區分大小寫,所以這將通過例如「塑料」,「塑料」,「塑料」和「塑料」,然而replace()是大小寫敏感的,這將只替換「塑料」。

那它失敗了,你很可能意味着價值並沒有完全的情況相匹配。也許它是其實「塑料/重建」左右呢?

您基本上需要固定外殼(並將containsIgnoreCase()替換爲),或者執行不區分大小寫的替換操作,但這種功能在中不可用。你很可能需要一個人。

+0

感謝這裏你的指導,我也沒注意的情況下那麼多。但這裏的問題是不同的,這是我的錯誤。在此過程中,我已經在之前的某個地方替換了關鍵字「塑料」,因此整體上它與「塑料/重建」不匹配。不好意思打擾你哥們。 –