所以我从客户端,计算机名称和IP获取。我得到那些到我的服务器,在多行的文本框中选择它们。所以,我得到这样的消息:名称:xxx-PC; IP:xxx.xxx.xxx.xxx!我想把名称和IP带到另一种形式,但是当长度总是不同时,我如何提取名称/ ip? 感谢
答案 0 :(得分:1)
我认为使用Split() ...
没有任何问题假设您有完全一组由分号分隔的配对值,并且每对都有完全一个冒号,将名称与值分开:
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)
如果您的输入更复杂,请更新详情。
----------编辑----------
我真的不知道我该怎么做才能让字符串进入 文本框
好的,我读到这个:
如果是这样,只需将它放在TextBox中,然后使用我向您展示的代码提取数据并将它们放在其他TextBox中:
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
这对我能提供你迄今为止提供的信息的帮助很大......
答案 1 :(得分:1)
这是使用模式
的Regex.Match()的一个很好的候选者"^Name: (.*?); IP: (.*?)$"
故障:
^
- 字符串的开头Name:
- 文字字符串(.*?)
- 存储在捕获组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
答案 2 :(得分:0)
一种简单的方法(在这种情况下使用RegEx是一种矫枉过正,或者在“;”或其他任何选项中拆分......)是寻找第一个“:”的索引和第一个索引“;”,而不是从子串开始形成索引“:”,其长度最多为“;”。 对于IP,它是类似的......