Vb.net 获取字符串的某些部分

Vb.net 获取字符串的某些部分,vb.net,substring,Vb.net,Substring,因此,我从一个客户端,一个计算机名和一个ip。我把这些信息发送到我的服务器,服务器会在一个多行文本框中接收它们。所以,我收到这样一条信息:姓名:xxx PC;IP:xxx.xxx.xxx.xxx!我想将名称和ip转换为另一种形式,但是当长度可能总是不同时,如何提取名称/ip? 感谢一种简单的方法(在这种情况下不使用RegEx,这是一种过度使用,或者在“;”处拆分,或者意味着其他选项…)是查找第一个“:”的索引和“;”的第一个索引,而不是从“:”的索引中取子字符串:“长度不超过”;”。 对于IP,

因此,我从一个客户端,一个计算机名和一个ip。我把这些信息发送到我的服务器,服务器会在一个多行文本框中接收它们。所以,我收到这样一条信息:姓名:xxx PC;IP:xxx.xxx.xxx.xxx!我想将名称和ip转换为另一种形式,但是当长度可能总是不同时,如何提取名称/ip? 感谢

一种简单的方法(在这种情况下不使用RegEx,这是一种过度使用,或者在“;”处拆分,或者意味着其他选项…)是查找第一个“:”的索引和“;”的第一个索引,而不是从“:”的索引中取子字符串:“长度不超过”;”。
对于IP,它是相似的

我认为使用

假设您有一组用分号分隔的成对值,并且每对值都有一个冒号,将名称与值分隔开来:

Dim stringFromServer As String = "Name: xxx-PC; IP: xxx.xxx.xxx.xxx"
Dim values() As String = stringFromServer.Split(";")
Dim name As String = values(0).Split(":").Last.Trim
Dim IP As String = values(1).Split(":").Last.Trim
Debug.Print("name = " & name)
Debug.Print("IP = " & IP)
如果您的输入更复杂,请更新更多详细信息

------编辑----

我真的不知道我该怎么做才能得到我要进去的绳子 文本框

好吧,我读到的是:

  • 您已经成功地连接到某个~thing~
  • 您已经收到一些数据
  • 您已经将该数据转换为字符串
如果是这样,只需将其放在文本框中,然后使用我向您展示的代码提取数据片段并将其放在其他文本框中:

txtChat.Text = yourDataFromSomeWhereElse
Dim values() As String = yourDataFromSomeWhereElse.Split(";")
Dim name As String = values(0).Split(":").Last.Trim
Dim IP As String = values(1).Split(":").Last.Trim
TextBox2.Text = name
TextBox3.Text = IP

这是我能为您提供的到目前为止的信息提供的最大帮助…

这是使用该模式的Regex.Match()的一个很好的候选者

"^Name: (.*?); IP: (.*?)$"
细分:

  • ^
    -字符串的开头
  • 名称:
    -文字字符串
  • (.*)
    -捕获组1中存储的零个或多个字符
  • ;IP:
    -文字字符串
  • (.*)
    -捕获组2中存储的零个或多个字符
  • $
    -字符串结尾
代码示例:

Imports System
Imports System.Text.RegularExpressions

Public Module Module1
    Public Sub Main()
        Dim data As String = "Name: xxx-PC; IP: xxx.xxx.xxx.xxx"
        Dim name As String = String.Empty
        Dim ip As String = String.Empty

        Dim match = Regex.Match(data, "^Name: (.*?); IP: (.*?)$")
        If match.Success Then
            name = match.Groups(1).Value
            ip = match.Groups(2).Value
        End If

        Console.WriteLine(name)
        Console.WriteLine(ip)
    End Sub
End Module
结果:

xxx-PC
xxx.xxx.xxx.xxx

StackOverflow不是这样工作的。您首先要编写一些代码,如果您有特定的问题/错误,那么您可以发布代码,解释特定的问题,并提出特定的问题。然后可能有人会回答。否则,人们不会在这里为您编写整个代码。您可以找到常见的字符/模式,然后从那里开始。查看
字符串操作
。感谢您提供的有用答案,因为某些原因,它不起作用。因此,我获取信息(名称/IP)并将其发送到服务器上的文本框,我尝试:
如果txtChat.Text.Length>=1,则调试.Print(TextBox2.Text)Debug.Print(TextBox3.Text)End如果这不太有效,它说当表单加载时:textbox2.text=xxx PC textbox3.text=xxx.xxx.xxx.xxx我不知道如何更新文本。有什么建议吗?每次收到新的响应时,你都需要使用上面的代码提取值并用这些值更新相应的文本框…我刚刚意识到,这不是问题所在,所有这些的开头都是来自服务器的字符串,而该字符串实际上不是来自服务器的,它只是定义为:“Name:xxx PC;IP:xxx.xxx.xxx.xxx”。我真的不知道我该怎么做才能得到文本框中的字符串。如果我尝试:Dim stringFromServer As String=txtChat.text(接收内容的txtbox)会给我一个错误,因为它无法拆分不存在的内容。。我真的不知道该怎么办:(