【发布时间】:2014-03-26 13:54:18
【问题描述】:
我正在向一个函数发送一个结构属性,它是一个字符串(已经被处理过)。这是一个IP地址。具体来说:
Dim ipaddr As String = "192.168.2.112"
至少,这是我们经过一些处理后得到的值。在我的局部变量窗口中间构建中看起来像这样,所以我知道它看起来不错。我正在尝试为 HTTP 命令创建一个请求字符串。所以我像这样连接:
Dim ReqStr As String = "http://" & ipaddr & "/cgi-bin/cmd/"
但是这样做会产生这些奇怪的空间!如结果字符串为
"http://192.168.2.112 /cgi-bin/cmd"
我认为生成的代码可能会得到非 ASCII 字符值,所以我把它放在“\S+”正则表达式中,或者我做了 ipaddr.trimend() 或 .trim 等。所有这些都添加了空格。当我在构建时在本地查看 ipaddr 时,它会在 ipaddr 值的正确末尾结束。
然而,当我将硬编码字符串(“192.168.2.112”)放入字符串连接中的 ipaddr 位置时,没有空格。如何摆脱我看不到的“秘密”ascii 字符?
编辑
这里是重现问题的代码示例:
Dim bytes() As Byte = {49, 57, 50, 46, 49, 54, 56, 46, 50, 46, 49, 49, 50, 0, 0, 0}
Dim ipaddr As String = Encoding.ASCII.GetString(bytes)
Dim ReqStr As String = "http://" & ipaddr.TrimEnd() & "/cgi-bin/cmd/"
【问题讨论】:
-
@neel 因为这就是您在 VB.NET 中的操作方式
-
上面的代码按预期工作,结果字符串中没有奇怪的字符。如果你得到了这个结果,那么这里还有其他东西在起作用
-
@Neel 虽然是一个不错的网站,但它几乎不是 VB.NET 的参考
-
@neel - 你应该使用 MSDN 作为官方来源。看看这个:msdn.microsoft.com/en-us/library/te2585xw.aspx
-
调试时,请打开即时窗口并输入
?System.Text.Encoding.Unicode.GetBytes(ReqStr)并回车。然后将该命令的输出复制并粘贴到您的问题中。这将有助于我们重现并更好地理解您的问题。