Regulärer Ausdruck zum Entfernen von Sonderzeichen in JSTL-Tags

Ich arbeite an einer Spring-Anwendung und auf der JSPX-Seite muss ich einige Werte dynamisch von der Eigenschaftsseite laden und sie mithilfe des Options-Tags als Dropdown festlegen. Ich muss denselben Text für den Optionswert und für die Anzeige verwenden, aber für den Optionswert muss ich alle Sonderzeichen entfernen.

Zum Beispiel, wenn der Wert Mütterlicher Onkel ist, dann brauche ich

<code><option value="MaternalUncle">Maternal Uncle</option>
</code>

Was ich bekomme ist

<code><option value="Maternal Uncle">Maternal Uncle</option>
</code>

Es gibt zwei Anwendungen, die diese Seite verwenden können, und die zu ladende Eigenschaftendatei hängt von der App ab. Wenn ich Werte für App 1 lade, werden die Werte richtig angezeigt. Der letzte Wert in App1 ist "Andere" und enthält keine Sonderzeichen. Für App 2 werden keine Leerzeichen entfernt, bei denen der letzte Wert "Onkel mütterlicherseits" ist. repOptions im Code ist ArrayList, wobei die Werte aus der Eigenschaftendatei geladen werden. Hier ist mein Code:

<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>

Die erste App entfernt Leerzeichen, da dieser Wert in der Liste von 9 der vierte ist. Für App2 ist dies der letzte Wert und Regex funktioniert nicht. Wenn ich Onkel mütterlicherseits als erste Eigenschaft für App2 festgelegt habe, funktioniert dies einwandfrei. Voraussetzung ist jedoch, dass es die letzte Option gibt.

<code> <option value="${fn:replace(repOption, ' ','')}">
</code>

arbeitet für Leerzeichen, aber es kann Werte wie Bruder / Schwester geben, also muss ich / auch entfernen, daher verwende ich Regex.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage