我正在调用Win32 API函数并返回一个用空字符填充的字符串。 Trim$()
不会删除它们。是否有更简单的解决方案,然后一次删除一个字符?
答案 0 :(得分:5)
如果它只是填充到右边,你可以使用这样的东西:
function ntrim(byval theString as string) as string
dim iPos as long
iPos = instr(theString, chr$(0))
if iPos > 0 then theString = left$(theString, iPos - 1)
ntrim = theString
end function
答案 1 :(得分:0)
基于最后一个,如果由于某些其他原因你的文本中可能存在NULL,那么这可能会更好吗?
Function nTrim2(theString As String) As String
Dim iPos As Long
iPos = Len(theString)
For i = iPos To 0 Step -1
iPos = i
If Mid$(theString, i, 1) <> Chr$(0) Then Exit For
Next
nTrim2 = Left$(theString, iPos)
End Function
答案 2 :(得分:0)
在我的情况下,Replace()和InStr()不能用于Chr(0)(看不到它没有显示任何错误),但是可以删除Null,比较和使用Mid(),Left()和Len()如上或本例所示:
If Mid$(str, 1, 1) = Chr$(0) Then str = Mid$(str, 2)
If Mid$(str, Len(str), 1) = Chr$(0) Then str = Left$(str, Len(str) - 1)
这是从末尾删除Null,例如从objFile.ExtendedProperty("Dimensions")
值,例如“?600 x 400?”。 Nulls(?)在Windows 10中被引入,但在Windows XP中没有。