2017-12-28 12 views
1

に保存されていない私は、次のような段落を解析しようとしています...内容は

Group 1. Does this or does that. Or Sometimes this. Or that. 

Group 2. I do lots of things. But not this. Or that. 

Group 3. I do this. I do that. Sometimes this. Sometimes that. 

「グループ1-3は、」組織名であり、それぞれ次の文を分離ある期間は関数である。

コード:

Public Sub parseParagraphs(paragraphList As List(Of String)) 
    Dim listOfOrgs As New List(Of EAB_Org) 
    Dim listOfFuntions As New List(Of String) 

    Dim orgName As String 

    For Each item In paragraphList 
     listOfFuntions.Clear() 
     Dim words As String() = item.Split(New Char() {"."c}) 'Splits on periods 
     orgName = words(0) 'Sets the orgName 
     For index As Integer = 1 To words.Count - 1 'rest of items in list are functions performed 
      listOfFuntions.Add(words(index)) 
     Next 
     Dim anOrg As New EAB_Org(orgName, listOfFuntions) 

     listOfOrgs.Add(anOrg) 
    Next 
End Sub 

EABクラス:何らかの理由で

Public Class EAB_Org 
    Dim orgName As String 
    Dim listOfTasks As List(Of String) 

    Public Sub New(theOrgName As String, theListOfTasks As List(Of String)) 
     orgName = theOrgName 
     listOfTasks = theListOfTasks 
    End Sub 

    Public Function getOrgName() 
     Return orgName 
    End Function 

    Public Function getListOfTasks() 
     Return listOfTasks 
    End Function 
End Class 

、私はlistOfOrgsの内容を印刷するとき、すべての組織名が正しいですが、機能はすべてあります同じで常に読み込まれる関数の最後のセット。

コード私は印刷に使用します:

Public Sub writeExcel(listOfOrgs As List(Of EAB_Org)) 
    For Each anItem In listOfOrgs 
     Console.WriteLine(anItem.getOrgName) 
     For Each anotherItem In anItem.getListOfTasks 
      Console.WriteLine(anotherItem) 
     Next 
    Next 

End Sub 

出力は次のようになります。

Group 1 
I do this. I do that. Sometimes this. Sometimes that. 

Group 2 
I do this. I do that. Sometimes this. Sometimes that. 

Group 3 
I do this. I do that. Sometimes this. Sometimes that. 
+0

あなたのコードはOKらしいです。 'writeExcel'メソッドと' List(Of EAB_Org) 'のどちらを引数として渡すのですか? – MatSnow

+0

@matsnow私は 'parseParagraphs'サブの' writeExcel'を呼び出し、 'listOfOrgs'リストに渡します。私は不満を感じ、 'EAB'クラスにいくつかのコードを渡してしまいました。私はまだこのコードが私のために働いていなかった理由について非常に興味があります – Bob

答えて

2

問題がEAB_Orgのコンストラクタで、theListOfTasksparseParagraphsサブでlistOfFuntionsへのポインタが(あなたが変更しておくもの)だけであるということです。コンストラクタでは、新しいList(Of String)を作成し、theListOfTasksの値をコピーする必要があります。

変更し、次のコンストラクタ:

Public Sub New(theOrgName As String, theListOfTasks As List(Of String)) 
    orgName = theOrgName 
    listOfTasks = New List(Of String) 
    For Each item As String In theListOfTasks 
     listOfTasks.Add(item) 
    Next 
End Sub