首页 > 解决方案 > strword 可以怎么拆分用过的vbcrlf

问题描述

怎么能拆分那个项目?我没有其他事情可做,这就是文本框结果的样子,我不知道如何从中正确提取值。

Dim lines() As String = TxtResultToString1.Lines
For i As Integer = 1 To lines.Length - 1
    Dim strWords = lines(i).Split(vbCrLf)
    MsgBox(strWords(0))
Next

项目:这看起来像在文本框中

{ item = , Count = 1 }
{ item = 13, Count = 1 }
{ item = 17, Count = 1 }
{ item = 31, Count = 1 }
{ item = 5, Count = 1 }
{ item = 8, Count = 1 }
{ item = 77, Count = 2 }
{ item = 68, Count = 1 }
{ item = 21, Count = 1 }
{ item = 71, Count = 1 }
{ item = 40, Count = 1 }
{ item = 14, Count = 1 }
{ item = 49, Count = 1 }
{ item = 45, Count = 1 }
{ item = 29, Count = 1 }
{ item = 36, Count = 1 }
{ item = 44, Count = 1 }

在另一个文本框中,我想执行以下操作: Textbox2.Lines=

    13 17 31
    17 31 5
    31 5 8
    8 77 68
    68 21 71
    21 71 40
    71 40 14
    40 14 49
    14 49 45
    49 45 29
    45 29 36
    29 36 44

标签: vb.net

解决方案


首先,我解析了文本框中的行以提取项目值。我用逗号分割线,然后元素 (0) 用等号分割并修剪。结果被添加到列表中。然后遍历列表,我使用字符串生成器来构建新行。负 3 可避免索引超出范围。

Private Sub ItemArrangement()
    Dim lst As New List(Of String)
    Dim lines = TextBox1.Lines
    For i = 1 To TextBox1.Lines.Count - 1
        Dim num = lines(i).Split(","c)(0).Split("="c)(1).Trim
        lst.Add(num)
    Next
    Dim sb As New StringBuilder
    For i = 0 To lst.Count - 3
        sb.AppendLine($"{lst(i)} {lst(i + 1)} {lst(i + 2)}")
    Next
    TextBox2.Text = sb.ToString
End Sub

您作为输出显示的内容错过了以 5 开头的行。如果这是故意的,您将不得不调整代码。

我在 TextBox2 中的输出看起来像这样。

13 17 31
17 31 5
31 5 8
5 8 77
8 77 68
77 68 21
68 21 71
21 71 40
71 40 14
40 14 49
14 49 45
49 45 29
45 29 36
29 36 44

推荐阅读