2010-07-03 104 views
2

我打電話給一個Win32 API函數並找回填充空字符的字符串。 Trim$()不會刪除它們。有沒有更容易的解決方案,然後一次刪除他們的一個字符?從VBA中的字符串中修剪空字符

+0

你能展示一些示例代碼嗎? – slugster 2010-07-03 04:17:10

回答

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 2010-07-03 14:03:54

0

鬆散的基礎上最後一個,也許這可能會更好,如果有風險,你可能在你的文字爲空值其他一些原因?

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)(看不到它不顯示任何錯誤),但空值可以去掉比較和使用MID()左()和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×400?」。在Windows 10中,空值(?)在這裏被插入,但在Windows XP中沒有。