2010-09-28 21 views
3

J'ai une forme qui retourne une liste comme ça quand soumis:comparaison de chaînes coldfusion

2009,9 

Je veux comparer aux valeurs tiré de la base mais continuer à obtenir une erreur. Je sais que je devrais probablement le convertir ou le convertir en une chaîne pour que la comparaison fonctionne, comment je fais cela?

Merci,

R.

Répondre

11
<cfif FORM.month eq "#qGetDates.year#,#qGetDates.month#"> 

ou

<cfif compare(FORM.month, "#qGetDates.year#,#qGetDates.month#") EQ 0> 
+0

Y at-il une grande différence de performance à l'aide de comparer? – cfEngineers

+0

comparer() devrait être le plus efficace. La comparaison simple "IS" ou "EQ" est insensible à la casse, mais elle a la meilleure lisibilité. Grande différence de performance? ne le pense pas. – Henry

+0

'string1.equals (string2)' discutablement a une bonne lisibilité mais est sensible à la casse –

1

Si vous souhaitez obtenir la deuxième valeur (une valeur après la première virgule), puis

<cfset x = "2009,7"> 
<cfoutput> 
    #listGetAt(x,2)# 
</cfoutput> 
1

Vous utilisez trop #. Sauf si les variables sont entre guillemets ou un bloc cfoutput, vous n'utilisez pas # comme règle générale.

Autre règle: Vous devez utiliser des guillemets autour des chaînes (la virgule dans ce cas). Vous pouvez également inclure des variables dans vos chaînes avec la règle ci-dessus (utilisez #) comme dans l'exemple de Henry.

<cfif #FORM.month# eq #qGetDates.year#,#qGetDates.month#> 

aurait dû # supprimés et la virgule a besoin de la chaîne concaténée

<cfif FORM.month eq qGetDates.year & "," & qGetDates.month> 

Ou comme Henry dit