gpt4 book ai didi

regex - VB.Net 连接字符串,添加奇怪的空格

转载 作者:行者123 更新时间:2023-12-02 01:51:03 26 4
gpt4 key购买 nike

我正在向一个函数发送一个结构属性,它是一个字符串(已经被处理过)。这是一个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 位置时,没有空格。如何摆脱我看不到的“ secret ”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/"

最佳答案

您发布的字节数组显示您有 NUL characters在您的字符串中,因此标准 Trim 将不起作用,因为这只会删除空格。

尝试使用 overloaded Trim它接受字符以删除空字符:

Dim ReqStr As String = "http://" & ipaddr.Trim(Convert.ToChar(0)) & "/cgi-bin/cmd/"

更好的解决方案可能是使用 IPAddress键入(来自 System.Net 命名空间)以保存您的 IP 地址。这不会解决您的问题,但会引发运行时错误,将您的流氓数组转换为地址:

Dim ip As IPAddress = Nothing
If Not IPAddress.TryParse(Encoding.ASCII.GetString(bytes), ip) Then
'ip address is not valid
End If
Dim ReqStr As String = "http://" & ip.ToString & "/cgi-bin/cmd/"

关于regex - VB.Net 连接字符串,添加奇怪的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22663158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com