2010-09-01 30 views
20

我正在使用Coldfusion。我想將兩個字符串連接成同一個結構鍵,但我一直收到「無法將x轉換爲布爾值」的錯誤。如何連接兩個字符串並將它們存儲到同一個結構鍵中

例如:

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

無論以下工作

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

的爲什麼沒有方法的工作?

回答

46

&是字符串concat運算符,AND&&是布爾運算符。

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

Y,沒錯。 – ppshein 2010-09-02 01:16:32

8

除了亨利的回答,您也可以連接兩個字符串是這樣的:

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

我在過去幾周對Cf9進行了一次非正式測試,並且驚訝地發現這種方法對於單個級聯顯着較慢。這對兩個人來說幾乎同樣糟糕。我認爲這是因爲CF如何處理執行區域,但這是一個猜測。 – 2010-09-02 12:57:46

8

我已經通過4點不同的方式來連接字符串,結果做了一些關於CF10非正式測試令人驚訝。我以各種方式做了50次迭代「HELLO」。我已經按照從最慢到最快的順序包含了一些粗略的數據。這些數字是在10度不同的要求相一致,因此平均:

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

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

這些下降,我預計的順序,但在StringBuffer如何更快的是驚訝。我認爲在串聯大量字符串數據時(例如CSV或類似數據),您將充分利用此功能。在典型的一次性操作中,我沒有進行過詳細的測試,在另一個選項上衡量一個選項。

相關問題