获取字符串的某些部分

时间:2015-07-17 22:33:50

标签: vb.net substring

所以我从客户端,计算机名称和IP获取。我得到那些到我的服务器,在多行的文本框中选择它们。所以,我得到这样的消息:名称:xxx-PC; IP:xxx.xxx.xxx.xxx!我想把名称和IP带到另一种形式,但是当长度总是不同时,我如何提取名称/ ip? 感谢

3 个答案:

答案 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

Fiddle Demo

答案 2 :(得分:0)

一种简单的方法(在这种情况下使用RegEx是一种矫枉过正,或者在“;”或其他任何选项中拆分......)是寻找第一个“:”的索引和第一个索引“;”,而不是从子串开始形成索引“:”,其长度最多为“;”。 对于IP,它是类似的......