2016-01-20 1 views
0

У меня есть некоторые данные, как показано нижеКак синтаксический анализ данных с разделителями с точкой и равным затем добавить к ListView

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 

ответ

0

Ваш код не делает ничего, чтобы разделить то, что последняя часть строки , Он только разбивается на "." а затем «=». Вы не объяснили правила для этого разделения. Следующий код предполагает, что вы хотите отделить последний символ, только если это письмо.

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) 
+0

Последний символ выполнен с разбиением, но что «1000.2000 = 2A» имеет одинаковое значение. Как заставить его читать одно значение, а затем добавить его в список? – Kenna

+0

@ Kenna Я отредактировал свой ответ, чтобы ответить на ваш комментарий, и применить значения после «=» к более ранним элементам без «=». Это приводит к тому, что ваш вопрос говорит, что вы хотите. – Blackwood

+0

Спасибо. Работала отлично. – Kenna