web-dev-qa-db-fra.com

Comment concaténer deux chaînes et les stocker dans la même clé de structure

J'utilise Coldfusion. Je veux concaténer deux chaînes dans la même clé de structure, mais je reçois toujours une erreur de "impossible de convertir x en booléen".

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 aucune méthode ne fonctionne-t-elle?

28
Mohamad

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

<cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2>
56
Henry

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

<cfset myStruct.concatendatedSring="#myStruct.string1##myStruct.string2#">
10
Gert Grenander

J'ai fait un certain nombre de tests informels sur CF10 à travers 4 façons différentes de concaténer des chaînes et les résultats sont surprenants. J'ai fait 50 000 itérations d'ajout de "BONJOUR" de différentes manières. J'ai inclus quelques données approximatives ci-dessous dans l'ordre du plus lent au plus rapide. Ces chiffres étaient cohérents pour 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

Ceux-ci tombent dans l'ordre que j'attendais, mais j'ai été surpris de voir à quel point le StringBuffer était plus rapide. Je pense que vous allez tirer le meilleur parti de cela lors de la concaténation de grands contours de données String, tels qu'un CSV ou similaire. Il n'y a aucun test détaillé que j'ai effectué qui pesait une option sur l'autre dans des opérations ponctuelles typiques.

10
Tristan Lee