代码之家  ›  专栏  ›  技术社区  ›  Mohamad

如何连接两个字符串并将它们存储到同一个结构键中

  •  25
  • Mohamad  · 技术社区  · 15 年前

    我用的是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>
    

    3 回复  |  直到 15 年前
        1
  •  59
  •   Henry    15 年前

    & 是字符串concat运算符, AND &&

    <cfset myStruct.concatendatedSring = myStruct.string1 & myStruct.string2>
    
        2
  •  13
  •   Tristan Lee    10 年前

    我已经通过4种不同的连接字符串的方法对CF10进行了一些非正式测试,结果令人惊讶。我用各种方法反复添加了5万次“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或类似文件)时,您将从中获得最大的好处。在典型的一次性操作中,我没有做过详细的测试来权衡一个选项和另一个选项。

        3
  •  10
  •   Gert Grenander Keiron Lowe    15 年前

    除了Henry的答案,还可以像这样连接两个字符串:

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