【问题标题】:Split String based on Next Alphanumeric Character根据下一个字母数字字符拆分字符串
【发布时间】:2016-03-28 23:48:56
【问题描述】:

我有一个字符串:

Membership information ----------------------     Nodeid      Votes Name         2          1 MXQSRV2         1          1 pve (local)

我需要的数据是:

2 1 MXQSRV2 1 1 pve (local)

这转化为:

Nodeid(Needed)    Votes(Can be thrown away)     Name(Needed) Nodeid(Needed)    Votes(Can be thrown away)     Name(Needed)

我想要的结果是一个列表框,显示:

1 pve

2 MXQSRV2

这意味着:NodeID 名称

但如果该列表更长,可以适应

我需要名称前面的两个数字中的第一个,第二个数字可以丢弃,然后是名称。 我到目前为止的代码是:

    Dim phaze2 As String = Replace(input, " (local)", "")
    Dim phaze3 As String = Replace(phaze2, "Membership information", "")
    Dim phaze4 As String = Replace(phaze3, "----------------------", "")
    Dim phaze5 As String = Replace(phaze4, "Node", "")
    Dim phaze6 As String = Replace(phaze5, "id", "")
    Dim phaze7 As String = Replace(phaze6, "Votes", "")
    Dim phaze8 As String = Replace(phaze7, "Name", "")
    Dim phaze9 As String = Replace(phaze8, " ", "")

这会返回:

*return*
*return*
*return*
*return*
21 MXQSRV2
11 pve
*return*

想法?

【问题讨论】:

  • 你的字符串会一直这样吗?
  • 是的,格式始终相同,但相同模式下的内容可能会变长
  • 那么对您来说最好的选择可能是用制表符替换所有多空格,然后使用String.Split() 拆分制表符上的字符串。我将立即发布一个示例。

标签: arrays vb.net string split


【解决方案1】:

因为你的字符串数据是一致的,你可以去掉多余的填充然后分割字符串,像这样:

While data.Contains("  ")
    data = data.replace("  ", " ")
End While


Dim values() as string = data.split(" ")

完成此操作后,您可以通过使用字段的索引并连接值来根据需要获取值。例如:

Label1.Text = values(3) & " " & values(7)

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多