1

我正在从 excel 中导入一张表。其中一列似乎有一些空间。因此,例如字符串是 A = abc/xyz/rpw

现在我正在使用拆分

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

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

4

1 回答 1

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()函数丢弃字符串中的所有换行符,而不仅仅是当换行符是最后一个字符时。或者,如果字符串中可能有换行符并且您希望保留这些换行符,则可以使用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<

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

于 2013-07-12T22:20:16.000 回答