Обрезать нулевые символы из строки в VBA - PullRequest
2 голосов
/ 03 июля 2010

Я вызываю функцию Win32 API и возвращаю строку, дополненную нулевыми символами. Trim$() не удаляет их. Есть ли более простое решение, чем удаление их по одному символу за раз?

Ответы [ 3 ]

5 голосов
/ 03 июля 2010

если он просто дополняется вправо, вы можете использовать что-то вроде этого:

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
0 голосов
/ 11 ноября 2015

В моем случае 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)

Это нулевое удаление с концов, например, из значения objFile.ExtendedProperty("Dimensions"), например «600 x 400». Нули (?) Вставляются здесь в Windows 10, но не в Windows XP.

0 голосов
/ 10 июня 2015

Приблизительно на основании последнего, может быть, это может быть лучше, если есть риск, что вы можете иметь значения 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...