我把定长字符串保存后读取出来。后面有一些多余的空格。用trim()函数无法去掉这些空格。
我调试看了一下,定长字符串的最后有几个┍ 这样的符号。然后我定义定长字符串时故意多保存了几位,读取出来后再把右边的几个字符去掉。但今天我发现有一个定长字符串里面的┍ 的位置提前了,导致我无法用前面的办法去掉了。
请问有别的方法把定长字符串后面多余的东西去掉吗?
我调试看了一下,定长字符串的最后有几个┍ 这样的符号。然后我定义定长字符串时故意多保存了几位,读取出来后再把右边的几个字符去掉。但今天我发现有一个定长字符串里面的┍ 的位置提前了,导致我无法用前面的办法去掉了。
请问有别的方法把定长字符串后面多余的东西去掉吗?
s=定长字符串
debug.print s
如果赋值字符串的字符少于 size 个,则用空格将不足部分填满。如果赋值字符串的长度太长,则会直接截去超出部分的字符.....所以不可能直接去除定长字符变量中的空格...
只有声明一个变长字符串,赋值时用trim处理一下定长字符串即可...
如果这个定长字符串中有其它不可见字符,trim处理不了,可以用replace处理....
去除那些用instr+left比较快点 dim a as string * 5
dim b as string
a = 123
b= left(a,instr(a,vbnullchar))
'去掉固定长度字符串右边的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
Label1.Visible=False
Label1.Caption=定长字符串,
Label1.Caption会自动把定长字符串后面多余的东西去掉。测试一下:Text1.Text = Len(Label1.Caption),看看字节数^-^
你把\0替换为32,再用trim()就可以了
replace(s,chr(0)," ")
Windows API: CopyMemory
貌似是这样的