2010-07-03 88 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中没有。