Сравнение числового значения внутри строки во Freemarker

#string #integer #compare #freemarker

#строка #целое число #Сравнить #freemarker

Вопрос:

У меня есть вариант использования, в котором я получаю сумму в виде строки, и мне нужно сравнить ее с целочисленным значением. Строка имеет следующие условия: 1. Его первые три буквы обозначают валюту 2. Строка может состоять из запятых, например, 540 000 евро обозначает 540000 евро.

Один из способов, которым я могу думать об этом, — это:

1 Возьмите подстроку из 4-го символа, используя ?substring

2 Удалите запятые, используя ?replace

3 Преобразуйте в целое число, используя ?number

4 и затем сравните

Есть ли более чистый способ добиться этого?

Ответ №1:

Вы можете инкапсулировать это в a #function или a TemplateMethodModelEx . Но на самом деле, модель данных (контекст шаблона), которую вы используете, довольно странная. Особенно, если предполагается, что шаблон выполняет математические вычисления, вы должны получать числа (например BigDecimal , -s или Integer -s), а не эти строки. Поэтому я бы попытался очистить модель данных перед передачей ее в шаблон. Это чистое решение.