我有以下代码:
<cfset abcList = "*,B,b,A,C,a">
<cfset abcList=ListToArray(abcList,',')>
当我输出'abcList'
时,它会给我一个值但是当我在'abcList'
中使用<cfif>
时,它无效。以下是创建问题的代码:
<cfoutput>
#abcList[1]# <!---This is giving '*' as Correct o/p--->
<cfif #abcList[1]# eq '*'> <!---Here its going in else--->
list has * at first place
<cfelse>
* is not first
</cfif>
</cfoutput>
有关我的代码中有什么问题的建议吗?
答案 0 :(得分:4)
您不一定需要将列表转换为数组。如果从列表变量开始,可以使用Coldfusion列表函数执行相同的操作而不指定数组转换。
<cfset abcList = "*,B,b,A,C,a">
<cfif Compare(listGetAt(abcList, 1), '*') EQ 0>
Match
<cfelse>
No Match
</cfif>
请注意,Coldfusion的大多数字符串比较都不区分大小写。因此,如果您需要测试'B'与'b'不同,则需要使用compare() function或者使用其中一个正则表达式字符串函数。在这种情况下,如果字符串1等于字符串2,则compare()返回0.如果您不需要区分大小写,那么您可以进一步简化:
<cfset abcList = "*,B,b,A,C,a">
<cfif listGetAt(abcList, 1) EQ '*'>
Match
<cfelse>
No Match
</cfif>
答案 1 :(得分:3)
<cfset abcList = "*,B,b,A,C,a">
<cfset abc=ListToArray(abcList)>
<cfif #abc[1]# eq "*">OK<cfelse>FAIL</cfif>
<cfif abc[1] eq "*">OK<cfelse>FAIL</cfif>
为我打印“OK OK”。你可以重新确认它为你打印别的吗?
答案 2 :(得分:3)
对我来说也很好。也许你在列表值中有一些额外的空格?这会扭曲结果:
<cfset abcList = "#chr(32)#*,B,b,A,C,a">
<cfset abcList=ListToArray(abcList,',')>
<cfoutput>
The value of abcList[1] = #abcList[1]# <br/>
<cfif abcList[1] eq '*'>
list has * at first place
<cfelse>
The else condition was hit because abcList[1] is "(space)*" and not just "*"
</cfif>
</cfoutput>
首先尝试修剪该值。此外,不需要围绕该值的#符号。
<cfif trim(abcList[1]) eq '*'>
....
</cfif>
如果不起作用,则显示两个字符的ascii值。也许他们与你的想法不同。
<cfoutput>
ASCII abcList[1] = #asc(abcList[1])# <br/>
ASCII "*" = #asc("*")# <br/>
</cfoutput>