我通常不會在ColdFusion中工作,但是有一個FTP進程正在工作中,我必須創建一個報告,並提供唯一的選項,現在是ColdFusion 8服務器。這個FTP提要有一些問題(垃圾)。確定一個字符串是否爲空/空並且是一個數字而不是0?
所以,我做了查詢,然後我需要在輸出期間轉換一些字符串值來做一些數學運算。在此之前:
如何判斷輸出循環中的字段:是否爲空或爲空,是可以轉換爲有效數字的字符串,而不是0?
是否有一個簡單的方法來做到這一點瓦特/ o很多if語句?
謝謝!
我通常不會在ColdFusion中工作,但是有一個FTP進程正在工作中,我必須創建一個報告,並提供唯一的選項,現在是ColdFusion 8服務器。這個FTP提要有一些問題(垃圾)。確定一個字符串是否爲空/空並且是一個數字而不是0?
所以,我做了查詢,然後我需要在輸出期間轉換一些字符串值來做一些數學運算。在此之前:
如何判斷輸出循環中的字段:是否爲空或爲空,是可以轉換爲有效數字的字符串,而不是0?
是否有一個簡單的方法來做到這一點瓦特/ o很多if語句?
謝謝!
所以你想確保變量是數字而不是零?
那麼你一定要這樣:
<cfif IsNumeric(MyVar) AND MyVar NEQ 0 >
<cfif Len(field) and Val(field)>
LEN()將驗證字段具有長度(未空白 - 有在CF沒有空值)和Val()將自動轉換的第一個字符在字符串中進入到一個數字 - 或返回0如果不行的話。
注意下面Peter的評論;儘管這是最不詳細的答案,但Val()可能會在下面的某些邊緣條件下失敗,即。該字段是一個字符串,但以數字開頭,錯誤地將其轉換爲數字,並計算爲TRUE。
怕我不同意兩次 - [CF _kinda_具有空值(http://www.bennadel.com/blog/1654-Learning-ColdFusion-9-IsNull-和 - 工作 - With-NULL-Values.htm)(他們有點古怪),字符串「6a」不是一個數字,但val('6a')返回6,因此通過,OP可能不會不想要。 –
哦,剛纔注意到這個問題涉及到CF8,所以上面關於空值的博文不適用。 (儘管如此,仍然有一些潛在的有用信息。) –
他的標籤是coldfusion-8。你的例子還顯示了來自Java null的強制轉換。不同於
確定一個字符串是否不爲空/空,是數字,而不是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。
心連心,
拉里
對不起,我並不是故意投票,而是無意中點擊。我很抱歉 –
謝謝 - 這很好用 – Reno