如何从弦的右侧修剪空间?

时间:2013-07-12 21:50:29

标签: ms-access split ms-access-2007 access-vba trim

我从excel导入一个表。其中一个专栏似乎有一些空间。 例如,String是A = abc / xyz / rpw

现在我正在使用拆分

sSplit = Split(A, "/", -1, vbBinaryCompare)

在这种情况下,sSplit(2)即rpw在末尾有一个空格,即使在修剪后我也无法将其删除。

1 个答案:

答案 0 :(得分:1)

如果Trim(sSplit(2))没有消除尾随空格,则字符串有可能以一个或多个字符结尾,这些字符看起来像一个空格但实际上是其他东西。

使用Asc()功能确定最右侧字符的ASCII值。空格字符是ASCII 32。

Debug.Print Asc(Right(sSplit(2), 1))

同时验证字符数。如果它大于4,则“rpw”后跟多个字符。

Debug.Print Len(sSplit(2))

在评论中,您报告问题字符是换行符,ASCII 10.您可以使用Replace()函数放弃字符串中的所有换行符,而不仅仅是当换行符是最后一个字符时。或者,如果字符串中可能存在换行符并且您希望保留这些换行符,则可以使用字符串长度减去1的Left()来仅丢弃最后一个字符。

这是一个立即窗口会话,可以使它更清晰。

' this variable is a proxy for the 3rd element of your array
sSplit_2 = "rpw" & Chr(10)
? Len(sSplit_2)
 4 
? ">" & sSplit_2 & "<"
>rpw
<
' use Replace to discard every line feed from the string
? ">" & Replace(sSplit_2, Chr(10), "") & "<"
>rpw<
' extract all but the last character of the string
? ">" & Left(sSplit_2, Len(sSplit_2) -1) & "<"
>rpw<

如果更方便,您可以在Split之前从“A”字符串中丢弃尾随换行符。