Определение, является ли строка не нулевой / пустой и является числом, а не 0? - PullRequest
5 голосов
/ 13 октября 2011

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

Итак, я делаю запрос, а затем мне нужно преобразовать некоторые строковые значения во время вывода, чтобы выполнить некоторую математику.До этого:

Как узнать, является ли поле в цикле вывода: не пустым или нулевым, является ли строка, которая может быть преобразована в допустимое число, и не является 0?

Есть простой способ сделать это без множества операторов if?

Спасибо!

Ответы [ 4 ]

10 голосов
/ 13 октября 2011

Итак, вы хотите убедиться, что переменная числовая, а не нулевая?

Тогда вы хотите это:

<cfif IsNumeric(MyVar) AND MyVar NEQ 0 >
5 голосов
/ 25 октября 2011

Определение, является ли строка не нулевой / пустой и является числом, а не 0?

Вот код, который я использовал бы в этом случае.

<cfif isDefined(stringVar) and len((trim(stringVar)) and isNumeric(stringVar)>
    do stuff here
</cfif>

isDefined возвращает true, еслипеременная существует.Если вы знаете область действия переменной, т.е., например, в форме или области видимости URL, вы можете использовать structkeyExists (form, "stringVar").Я бы рекомендовал использовать этот подход, если вы знаете область действия переменной.

Len (trim (stringVar)) - вторая проверка.Во-первых, он обрезает все начальные или конечные пустые пробелы в строке - это гарантирует, что любые пустые переменные не будут переданы.Затем, если что-то есть, он вернет длину строки.Если его пустое значение len вернет 0.

isNumeric (stringVar) возвращает true, если переменная является числом, и false в противном случае.

hth,

larry

0 голосов
/ 13 октября 2011
<cfif isNumeric(myfield) and myfield gt 0>
0 голосов
/ 13 октября 2011
<cfif Len(field) and Val(field)>

Len () проверит длину поля (не пусто - в CF нет пустых значений), а Val () автоматически преобразует первый символ в строке в число - или вернет 0, еслине может.

Обратите внимание на комментарий Питера ниже;хотя это наименее подробный ответ, Val () может потерпеть неудачу в определенных граничных условиях ниже, т.е.Поле является строкой, но начинается с числа, неправильно преобразует его в число и оценивает как ИСТИНА.

...