Wyrażenie regularne do usuwania znaków specjalnych w znacznikach JSTL
Pracuję nad aplikacją Spring i na stronie JSPX muszę dynamicznie załadować niektóre wartości ze strony właściwości i ustawić je jako rozwijane przy użyciu tagu opcji. Muszę użyć tego samego tekstu dla wartości opcji i do wyświetlania, ale dla wartości opcji muszę usunąć wszystkie znaki specjalne.
Na przykład, jeśli wartość jest wujkiem matki, to potrzebuję
<code><option value="MaternalUncle">Maternal Uncle</option> </code>
To, co dostaję, jest
<code><option value="Maternal Uncle">Maternal Uncle</option> </code>
Istnieją 2 aplikacje, które mogą korzystać z tej strony, a plik właściwości do załadowania zależy od aplikacji. Jeśli załaduję wartości dla aplikacji 1, to wartości zostaną wyświetlone poprawnie, ostatnia wartość w aplikacji1 to „Inne” i nie ma żadnych znaków specjalnych. W przypadku aplikacji 2 nie przycina białych znaków, gdzie ostatnią wartością jest „wujek matczyny”. repOptions w kodzie to ArrayList z wartościami załadowanymi z pliku właściwości. Oto mój kod:
<code><select name="person" id="person"> <option value="na">Select the relationship</option> <c:forEach items="${repOptions}" var="repOption"> <option value="${fn:replace(repOption, '[^A-Za-z]','')}">${repOption}</option> </c:forEach> </select> </code>
Pierwsza aplikacja usuwa białe znaki, ponieważ ta wartość jest 4. na liście 9. Dla app2 jest to ostatnia wartość, a wyrażenie regularne nie działa. Jeśli umieściłem wujka macierzyńskiego jako pierwszą właściwość dla app2, to działa to dobrze, ale wymagania mają mieć ostatnią opcję.
<code> <option value="${fn:replace(repOption, ' ','')}"> </code>
pracuje dla białych znaków, ale mogą być wartości takie jak Brother / Sister, więc muszę usunąć / również, dlatego używam wyrażenia regularnego.