我把定长字符串保存后读取出来。后面有一些多余的空格。用trim()函数无法去掉这些空格。
我调试看了一下,定长字符串的最后有几个┍ 这样的符号。然后我定义定长字符串时故意多保存了几位,读取出来后再把右边的几个字符去掉。但今天我发现有一个定长字符串里面的┍ 的位置提前了,导致我无法用前面的办法去掉了。
请问有别的方法把定长字符串后面多余的东西去掉吗?

解决方案 »

  1.   

    再赋个非定长字符串即可
    s=定长字符串
    debug.print s
      

  2.   

    既然是定长,必定知道长度,用Mid函数截取就是了
      

  3.   

    MID$比较好,一般来说,定长字符串如果无法用trim去头尾空格的话,那估计是 控制符或者是不可见字符,用replace不方便。
      

  4.   

    定长字符串:String * size
    如果赋值字符串的字符少于 size 个,则用空格将不足部分填满。如果赋值字符串的长度太长,则会直接截去超出部分的字符.....所以不可能直接去除定长字符变量中的空格...
    只有声明一个变长字符串,赋值时用trim处理一下定长字符串即可...
    如果这个定长字符串中有其它不可见字符,trim处理不了,可以用replace处理....
      

  5.   

    那些是空字符,vbnullchar, ch(0),就是c里面说的 \0 
    去除那些用instr+left比较快点  dim a as string * 5
    dim b as string
    a = 123
    b= left(a,instr(a,vbnullchar))
      

  6.   

    定长字符串是去不掉的,你只能曲线救国,把它赋给一个非定长字符串,再使用Tirm函数去掉空格即可
      

  7.   


    '去掉固定长度字符串右边的NULL字符(ASCII值为0)和SPACE字符(ASCII值为32)函数
    Public Function fDelInvaildChr(str As String) As String
    Dim i As Integer
      On Error Resume Next
      For i = Len(str) To 1 Step -1
        If Asc(Mid(str, i, 1)) <> 0 And Asc(Mid(str, i, 1)) <> 32 Then
          fDelInvaildChr = Left(str, i)
          Exit For
        End If
      Next
    End Function
      

  8.   

    把定长字符串后面多余的东西去掉,有一笨方法:
    Label1.Visible=False 
    Label1.Caption=定长字符串,
    Label1.Caption会自动把定长字符串后面多余的东西去掉。测试一下:Text1.Text = Len(Label1.Caption),看看字节数^-^
      

  9.   

    我很好奇一年前的帖子你怎么翻到的?你是从论坛的最有一页看起的么?话说这个┍ 实际是制表符,将chr(9)都替换了就行了。用正则的话可以直接用\s匹配替换,\s表示空格、制表符、换页符等
      

  10.   

    本帖最后由 bcrun 于 2011-10-20 13:24:01 编辑
      

  11.   

    你说的去不掉的空格应该是\0
    你把\0替换为32,再用trim()就可以了
    replace(s,chr(0)," ")
      

  12.   

    你去了解一下内存拷贝对你大有好处, 想怎么拷就怎么拷。
    Windows API: CopyMemory
      

  13.   

    下面的统统不要回了,问题的根本原因是楼主说的这个┍ 实际是制表符,用trim当然没用了,解决方案是先替换后用trim。另外这是一年前的问题,楼主可能早就改行了。
      

  14.   

    trim(replace(字符串,"┍",""))
    貌似是这样的