Dim a$, b$
a = a & b这里是重写 a 还是追加字符串到 a?怎么连接字符串,而不重写?

解决方案 »

  1.   

    我觉的即可以看做重写,也可以看做追加。重新定义一个C,C= a & b
      

  2.   

    用&串连字符串应该是重构字符串吧,所效率比较低的....所以大量的字符串连接,建议尽量用数组+join:dim arr(1) as string
    dim a,as string,b as string,s as string
    arr(0)=a
    arr(1)=b
    s=join(arr,vbnullstring)如果知道字符串变量的长度,可以用定长字符串+mid语句处理,这样是一次分配了内存:dim a as string,b as string
    dim c as string * 10  '比如len(a)+len(b)=10
    mid(c,1,len(a))=a
    mid(c,len(a)+1,len(b))=b
    debug.? c
      

  3.   

    定长字符串+mid语句,不错,非常感谢!同时:
    Dim arr(2) As String
    s = arr(0) & arr(1) & arr(2)
    s = Join(arr() , "")
    '这两句效果是不是相同的?
      

  4.   

    Dim arr(2) As String
    s = arr(0) & arr(1) & arr(2)
    s = Join(arr() , "")
    '这两句效果是不是相同的?
      

  5.   

    Dim arr(2) As String
    s = arr(0) & arr(1) & arr(2)
    s = Join(arr() , "")
    '哪一句得到结果 s 更快?
      

  6.   

    数组成员越多,Join 越快。
    因为 Join 是统计所有数组成员的长度,再加上 Delimiter 的使用次数,统计出最终结果的字符串长度,申请一次内存然后进行内容复制的。
    而用 & 操作符进行多个成员的字符串连接,执行每个  & 操作符都需要计算合并长度、申请内存、复制内容的操作。