2011-10-13 68 views
3

我通常不會在ColdFusion中工作,但是有一個FTP進程正在工作中,我必須創建一個報告,並提供唯一的選項,現在是ColdFusion 8服務器。這個FTP提要有一些問題(垃圾)。確定一個字符串是否爲空/空並且是一個數字而不是0?

所以,我做了查詢,然後我需要在輸出期間轉換一些字符串值來做一些數學運算。在此之前:

如何判斷輸出循環中的字段:是否爲空或爲空,是可以轉換爲有效數字的字符串,而不是0?

是否有一個簡單的方法來做到這一點瓦特/ o很多if語句?

謝謝!

回答

9

所以你想確保變量是數字而不是零?

那麼你一定要這樣:

<cfif IsNumeric(MyVar) AND MyVar NEQ 0 > 
+0

謝謝 - 這很好用 – Reno

0
<cfif Len(field) and Val(field)> 

LEN()將驗證字段具有長度(未空白 - 有在CF沒有空值)和Val()將自動轉換的第一個字符在字符串中進入到一個數字 - 或返回0如果不行的話。

注意下面Peter的評論;儘管這是最不詳細的答案,但Val()可能會在下面的某些邊緣條件下失敗,即。該字段是一個字符串,但以數字開頭,錯誤地將其轉換爲數字,並計算爲TRUE。

+0

怕我不同意兩次 - [CF _kinda_具有空值(http://www.bennadel.com/blog/1654-Learning-ColdFusion-9-IsNull-和 - 工作 - With-NULL-Values.htm)(他們有點古怪),字符串「6a」不是一個數字,但val('6a')返回6,因此通過,OP可能不會不想要。 –

+0

哦,剛纔注意到這個問題涉及到CF8,所以上面關於空值的博文不適用。 (儘管如此,仍然有一些潛在的有用信息。) –

+0

他的標籤是coldfusion-8。你的例子還顯示了來自Java null的強制轉換。不同於

0
<cfif isNumeric(myfield) and myfield gt 0> 
+0

呃,OP沒有給出不想要負數的任何跡象? :/ –

+0

這是真的...... – cfEngineers

5

確定一個字符串是否不爲空/空,是數字,而不是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。

心連心,

拉里

+0

對不起,我並不是故意投票,而是無意中點擊。我很抱歉 –

相關問題