【问题标题】:How to parsing data from delimited with dot and equal then add to listview如何解析用点分隔的数据,然后添加到列表视图
【发布时间】:2016-01-20 09:22:47
【问题描述】:

我有一些如下数据

1000.2000=2A.3000.4000=1.5000=2,5B

需要解析数据并添加到listview。 我已经用数组编写了代码,但仍然无法正常工作,我需要解决方案。

Dim str As String = "1000.2000=2A.3000.4000=1.5000=2,5B"
Dim tabLine() As String
tabLine = str.Split("."c)
   For k As Integer = 0 To tabLine.Length - 1
       Dim listitem As ListViewItem
       listitem = lvContent.Items.Add("1")
       Dim sep As Char() = New Char(0) {}
       sep(0) = "="c
       For Each s As String In tabLine(k).Split(sep, 2)
           listitem.SubItems.Add(s)
       Next
   Next

上面的代码告诉我这个结果

-----------------
1000 |      | 
2000 |   2A | 
3000 |      |
4000 |   1  |
5000 | 2.5B |

我想要下面的结果

-----------------
1000 |   2 | A
2000 |   2 | A
3000 |   1 |
4000 |   1 |
5000 | 2.5 | B

【问题讨论】:

    标签: arrays vb.net listview split delimiter


    【解决方案1】:

    您的代码没有做任何事情来拆分字符串的最后一部分。它只在“。”处分裂。然后是“=”。您还没有解释进行拆分的规则。以下代码假定您仅在最后一个字符是字母时才想要拆分它。

    Dim str As String = "1000.2000=2A.3000.4000=1.5000=2,5B"
    Dim items As New List(Of ListViewItem)
    Dim subNum As String = "", subLetter As String = ""
    
    For Each val As String In str.Split("."c).Reverse
        Dim subs() As String = val.Split("=".ToCharArray, 2)
        Dim item As New ListViewItem(subs(0))
    
        If subs.Length > 1 Then
            subNum = subs(1)
            subLetter = ""
            If Char.IsLetter(subNum(subNum.Length - 1)) Then
                subLetter = subNum(subNum.Length - 1)
                subNum = subNum.Substring(0, subNum.Length - 1)
            End If
        End If
    
        item.SubItems.AddRange({subNum, subLetter})
        items.Add(item)
    Next
    
    items.Reverse()
    lvContent.Items.AddRange(items.ToArray)
    

    【讨论】:

    • 最后一个字符是用 split 完成的,但是 "1000.2000=2A" 具有相同的值。如何使其读取为相同的值,然后将其添加到列表视图中?
    • @Kenna 我已经编辑了我的答案以解决您的评论并将“=”之后的值应用于没有“=”的早期项目。这会产生您的问题所说的您想要的结果。
    • 谢谢。完美运行。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2020-12-26
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多