2010-09-01 6 views
20

J'utilise Coldfusion. Je veux concaténer deux chaînes dans la même clé struct, mais je reçois toujours une erreur de "ne peut pas convertir x en booléen".Comment concaténer deux chaînes et les stocker dans la même clé struct

Par exemple:

<cfset myStruct.string1 = nodes[1].string1.XmlText> 
<cfset mystruct.string2 = nodes[1].string2.XmlText> 

Aucune des œuvres suivantes

<cfset myStruct.concatendatedSring = nodes[1].string1.XmlText AND nodes[1].string2.XmlText> 
<cfset myStruct.concatendatedSring = myStruct.string1 AND myStruct.string2> 

Pourquoi ni méthode?

Répondre

46

& est l'opérateur de concat de chaîne, AND et && sont des opérateurs booléens.

<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2> 
+0

Yap, c'est vrai. – ppshein

8

En plus de la réponse de Henry, vous pouvez également concaténer deux chaînes comme ceci:

<cfset myStruct.concatendatedSring="#myStruct.string1##myStruct.string2#"> 
+1

J'ai fait un test informel sur Cf9 au cours des deux dernières semaines, et j'ai été surpris de constater que cette méthode est * significativement * plus lente pour une seule concaténation. C'est presque aussi mauvais pour deux. Je pense que c'est à cause de la façon dont CF gère les zones d'exécution, mais c'est une supposition. –

8

Je l'ai fait un certain nombre de tests informels sur CF10 à travers 4 différentes façons de concaténer des chaînes et les résultats sont surprenants. J'ai fait des itérations de 50k d'ajouter «BONJOUR» de diverses manières. J'ai inclus quelques données brutes ci-dessous dans l'ordre du plus lent au plus rapide. Ces chiffres sont cohérents dans 10 demandes différentes, d'où la moyenne:

string1 = "#string1##string2#"; // ~4800ms 
string1 = string1 & string2; // ~ 4500ms 
string1 &= string2; // ~4200ms 

string1 = createObject("java", "java.lang.StringBuffer").init(); 
string1.append(string2); // ~250ms 

Ces automne dans l'ordre que je m'y attendais, mais il a été surpris de voir combien plus vite le StringBuffer était. Je pense que vous allez tirer le meilleur parti de cela lors de la concaténation de gros volumes de données String, comme un fichier CSV ou similaire. Il n'y a pas de test détaillé que j'ai effectué qui pesait une option sur l'autre dans les opérations ponctuelles typiques.