Подтвердить что ты не робот

Как использовать первую букву с JSTL/CSS?

Я кодирую приложение JSP/JSTL. Я хотел бы создать ссылку с первой буквой в верхнем регистре, а остальные строчные. Например, "моя LINK" станет "My Link".

Я видел, что в CSS я могу сделать:

<a href="..." style="text-transform: capitalize">${linkName}</a>

Это работает только тогда, когда ${linkName} - все в нижнем регистре, но не работает так, как я хочу, если в верхнем регистре, если он содержит "MY LINK", будет отображаться все в верхнем регистре.

Мне было интересно, как лучше всего решить эту проблему, например, можно использовать JSTL для преобразования ${linkName} в нижний регистр.

Кто-нибудь знает, как это сделать? Или любой альтернативный способ?

Спасибо заранее!

4b9b3361

Ответ 1

Вы можете использовать JSTL функции fn:toLowerCase() для ввода строка.

Итак, это должно сделать

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<a href="..." style="text-transform: capitalize">${fn:toLowerCase(linkName)}</a>

Ответ 2

Если вы не хотите использовать CSS и используете JSTL, это решение немного экстремально:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


<a href="..." >
${fn:toUpperCase(fn:substring(linkName, 0, 1))}${fn:toLowerCase(fn:substring(linkName, 1,fn:length(linkName)))}
</a>

Ответ 3

Apache Commons предлагает библиотеки для выполнения множества общих полезных задач. WordUtils может помочь вам здесь.

WordUtils.capitalizeFully("aaa BBB cCc");

Будет выводиться...

Aaa Bbb Ccc

Ссылка для WordUtils: http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#capitalizeFully%28java.lang.String%29

В моем веб-приложении я добавил обертку для этого в свой файл TLD...

<function>
    <name>capitalize</name>
    <function-class>org.apache.commons.lang3.text.WordUtils</function-class>
    <function-signature>java.lang.String capitalizeFully(java.lang.String)</function-signature>
</function>

Итак, теперь я могу это сделать...

<p>Hello ${blah:capitalize(firstName)}</p>

Я оставлю вас читать пользовательские файлы TLD, хотя другие люди объясняют это лучше.

Ответ 4

PFB приведенный ниже код, который преобразует "i AM god" в "Я есть Бог"

    <c:forEach var="word" items="${fn:split(fn:toLowerCase(stringToBeConverted),' ')}">
        <c:set var="formattedText" value="${formattedText} ${fn:toUpperCase(fn:substring(word,0,1))}${fn:toLowerCase(fn:substring(word,1,fn:length(word)))}" />
    </c:forEach>