2010-07-03 8 views
2

Win32 API 함수를 호출하고 null 문자로 채워진 문자열을 가져 오는 중입니다. Trim$()은 제거하지 않습니다. 한 번에 한 문자 씩 쉽게 제거 할 수있는 솔루션이 있습니까?VBA에서 문자열의 null 문자를 잘라 내기

+0

몇 가지 샘플 코드를 보여줄 수 있습니까? – slugster

답변

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 
+0

감사! 내가 너무 늦은 코드를 작성하지 않았다면 그걸 생각해 냈을거야. – BenV

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 
0

은 교체() 및 InStr이는() (0) (이 오류가 표시되지 볼 수 없습니다) 대하 작동하지 않지만, 널 (null)을 제거 할 수 있습니다 (좌측)과 렌() 위 또는이 예에서와 같이

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 × 400?". Null (?)은 Windows 10에서는 표시되지만 Windows XP에서는 표시되지 않습니다.

관련 문제