Coldfusion 如何在cfif语句中放置多个NOT条件?
这是我的代码:Coldfusion 如何在cfif语句中放置多个NOT条件?,coldfusion,logic,cfml,Coldfusion,Logic,Cfml,这是我的代码: <cfif (CFFILE.FileSize GT (4194304))> Delete File <cfelseif CFFILE.serverFileExt neq "png" > Delete File <cfelse> It's ok </cfif> 删除文件 删除文件 没关系 我想添加“jpg”和“jpeg”作为允许的文件类型。我试过了,但没有成功 <cfif (CFFILE.FileSize GT (419
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif CFFILE.serverFileExt neq "png" >
Delete File
<cfelse>
It's ok
</cfif>
删除文件
删除文件
没关系
我想添加“jpg”和“jpeg”作为允许的文件类型。我试过了,但没有成功
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif ( ( CFFILE.serverFileExt neq "png" ) OR ( CFFILE.serverFileExt neq "jpg" ) OR ( CFFILE.serverFileExt neq "jpeg" ) ) >
Delete File
<cfelse>
It's ok
</cfif>
删除文件
删除文件
没关系
有什么想法吗
解决方案:
我的OR声明需要是一个,谢谢你,Miguel-F,随着Busches的改进,这是最终结果:
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif NOT ListFindNoCase("jpg,jpeg,png", CFFILE.serverFileExt)>
Delete File
<cfelse>
It's ok
</cfif>
删除文件
删除文件
没关系
谢谢大家 您的代码语法正确,但逻辑有缺陷。该条件将始终为真,因为您正在使用
或。一旦其中一个条件为真,该条件即通过。尝试使用和
,如下所示:
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif (CFFILE.serverFileExt NEQ "png") AND (CFFILE.serverFileExt NEQ "jpg") AND (CFFILE.serverFileExt NEQ "jpeg")>
Delete File
<cfelse>
It's ok
</cfif>
删除文件
删除文件
没关系
如果您使用ColdFusion函数,请参阅Busches answer,了解如何将代码压缩一点。我认为代码中的问题只是在语句中使用了“或”。如果我读对了你的样本,它每次都会删除这个文件
我相信这会产生你想要的效果
<cfelseif ( ( CFFILE.serverFileExt neq "png" )
AND ( CFFILE.serverFileExt neq "jpg" )
AND ( CFFILE.serverFileExt neq "jpeg" ) ) >
您不会寻找可能被删除的文件满足任何一个条件(即“或”所满足的条件)的情况,因为任何文件扩展名都将不等于3个选项中的至少2个
相反,您正在寻找一种可能被删除的文件满足所有条件的情况(这就是“AND”的作用。正如Miguel-F所说,您的问题是您需要使用和而不是或。在这种情况下,我还建议切换到使用ListFindNoCase()
而不是使用多个或/和
语句
<cfif CFFILE.FileSize GT 4194304> <!--- You also don't need all those () here --->
Delete File
<cfelseif NOT ListFindNoCase( "png,jpg,jpeg", cffile.ServerFileExt )>
Delete File
<cfelse>
It's ok
</cfif>
删除文件
删除文件
没关系
ListFindNoCase
更简洁,更易于阅读和维护。使用,而不是使用或当他的问题不在使用和
时,我还建议他切换到!ListFind(“png,jpg,jpeg”,cffile.ServerFileExt)
而不是一遍又一遍地写同样的条件。@Busches把它写下来作为一个答案。更容易阅读和维护。我会投票给upI,我会用一个例子更新我的答案,但如果@Busches把它作为一个答案添加,我会把它从我的答案中删除。Miguel-F我是按照@Travis的建议做的。我会使用ListFindNoCase
来忽略case灵敏度。+1。一旦超过两个值/条件,列表函数通常更具可读性。