atw*_*147 13 string coldfusion boolean coldfusion-8
我习惯使用PHP和JavaScript,但我现在开始在Coldfusion中开展一个项目.
在PHP中,我习惯于一个字符串是"truthy"而empty/null是"falsy".
ColdFusion(特别是v8)似乎并不适用.
我想做以下工作,但无法弄清楚如何让CF看到字符串为真理:
<cfset x = "path\to\something.cfm">
<cfif x>
x is truthy
<else>
x is falsy
</cfif>
Run Code Online (Sandbox Code Playgroud)
我总是得到错误: cannot convert the value "path\to\something.cfm" to a boolean
isBoolean() 有点作品,但感觉不够健壮.YesNoFormat() 奇怪地给我同样的错误(尽管它应该做的事情与我的相反)ale*_*ale 23
ColdFusion具有一些类似的"真实性"功能.
以下将评估为真
true以下将评估为false
false在CF中,我们通常使用该len()函数来确定字符串中是否包含任何内容.由于非零数字的计算结果为"真",因此可行.
那么你的伪代码就是:
<cfset x = "path\to\something.cfm">
<cfif len(x)>
x is truthy
<else>
x is falsy
</cfif>
Run Code Online (Sandbox Code Playgroud)
由于ColdFusion将空值转换为空字符串,因此trim()结合使用将是一个好主意,如下所示:<cfif len(trim(x))>.
没有isString()功能,但有isValid():isValid("string",x)
YesNoFormat() 只需将布尔值转换为格式正确的"是"或"否"即可.
小智 6
除了ale的答案(<cfif len(x)>)之外,我还想指出你也会看到人们使用稍微不同的语法:
<cfif x neq "">
x is truthy
<cfelse>
x is falsy
</cfif>
Run Code Online (Sandbox Code Playgroud)
这个陈述非常接近你原来的尝试,但它只是检查它是否是一个空字符串,而不是比较字符串以查看它是否完全相同(就像你原来的尝试一样).
有关哪种方法在Stack Overflow上更有效和可读的讨论: len(x)更好或x NEQ""更好的CFML?
这都是主观的...虽然我更喜欢ale的方法,但我也想指出另一种方法以及完整性.