2016-01-28 2 views
2

Есть ли способ проверить, является ли строка числовой. {#strings.isNumeric(dataField)} не работает.Проверьте, содержит ли строка число или числовое - Thymeleaf

Как проверить, содержит ли строка числа (определенное количество цифр) - есть ли RegEx, который может использоваться, или встроенная функция, которую можно вызвать?

Хочет, чтобы избежать этого ниже:

{#string.contains('1') or #string.contains('2')} 

ответ

2

Попробуйте matches():

{#dataField.matches('[0-9]{3,8}')} 

Это соответствует строке, которая составляет от 3 длины до 8 цифр (включительно). Вы можете изменить эти значения независимо от того, что работает для вас.

Вы можете также использовать открытые диапазоны длины: [0-9]{3,} означает «по крайней мере 3 цифры»

+0

По какой-то причине это не работает testStringResult = $ {# strings.matches (СравниваемаяСтрока " [0-9] ')} –

+0

Ошибка: org.springframework.expression.spel.SpelEvaluationException: EL1004E: (поз. 9): вызов метода: совпадения методов (java.lang.String, java.lang.String) не могут быть найдены на org.thymeleaf.expression.String type \t at org.springframework.expression.spel.ast.MethodReference.findAccessorForMethod (MethodRefe rence.java:273) –

+0

@loser Я не знаком с тимелеафом, но попробую отредактированный код – Bohemian

1

Если у вас есть в вашем пути библиотека org.apache.commons.lang3 вы могли бы использовать его в качестве следующего

${T(org.apache.commons.lang3.StringUtils).isNumeric(dataField)} 

Таким образом, в случае, если вы хотите использовать, если блок это будет:

<th:block th:if="${T(org.apache.commons.lang3.StringUtils).isNumeric(dataField)}"> 
    <p>Is numeric!</p> 
</th:block/> 

В противном случае, если у вас нет org.apache.commons.lang3 в вашем пути к классу, вы можете реализовать свой собственный метод, который проверяет, является ли он числовым, а затем использовать его. Таким образом, вы можете создать класс, как в следующем:

package your.package; 

public class Utils { 
    public static boolean isNumeric(String data){ 
      //impl 
      return true; 
    } 
} 

И затем использовать его в следующее выражение:

${T(your.package.Utils).isNumeric(dataField)} 
Смежные вопросы