修剪VBA中字符串中的空字符

时间:2010-07-03 03:34:36

标签: vba string

我正在调用Win32 API函数并返回一个用空字符填充的字符串。 Trim$()不会删除它们。是否有更简单的解决方案,然后一次删除一个字符?

3 个答案:

答案 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中没有。