2011-01-05 50 views
0

我有一个显示由AutoCAD中返回以下信息的txt文件:如何使用VB.NET过滤TXT文件?

; IAcadToolbar: An AutoCAD toolbar 

; Property values: 

; Application (RO) = #<VLA-OBJECT IAcadApplication 00d591b4> 

; Count (RO) = 19 

; DockStatus (RO) = 4 

; FloatingRows = 5 

; Height (RO) = AutoCAD: The toolbar is invisible. Please make it visible 

; HelpString = "Draw Toolbar\n " 

; LargeButtons (RO) = 0 

; left = 1310 

; Name = "Draw" 

; Parent (RO) = #<VLA-OBJECT IAcadToolbars 224a6b04> 

; TagString (RO) = "ID_TbDraw" 

; top = 646 

; Visible = 0 

; Width (RO) = AutoCAD: The toolbar is invisible. Please make it visible 

; Methods supported: 

; AddSeparator (1) 

; AddToolbarButton (5) 

; Delete() 

; Dock (1) 

; Float (3) 

; Item (1) 

问题的存在是我需要对其进行过滤,所以我只留下了:

; DockStatus (RO) = 4 

; left = 1310 

; Name = "Draw" 

; top = 646 

; Visible = 0 

他们还必须保持以相同的顺序排列:

; DockStatus (RO) = 4总是排在后面 ; left = 1310等等,所有其他信息可能会被丢弃。

剂量任何人都知道如何在VB.NET中做到这一点?

回答

0

我建议把所有值的字符串,然后用分离器 然后筛选出你需要 的价值观和对它们进行排序,以便您需要 然后将其转换为输出格式要求

1

好吧,假设你有一个文件,你一行一行阅读,你不能简单地做这样的事情吗? (只有伪代码)

string result; 
foreach line in linesFromFile 
{ 
    if(line.StartsWith("; DockStatus") or 
     line.StartsWith("; Name = ")) 
    { 
     result += line; 
    } 
} 

我所介绍的是不漂亮,但可能让你开始。

3
Imports System.IO 
Imports System.Text 

Dim output = New StringBuilder() 

' Read the lines from FileName into an array of strings. ' 
Dim input = File.ReadAllLines(FileName) 

For Each line in input 

    If line.StartsWith("; DockStatus (RO) = ") OrElse 
     line.StartsWith("; left = ") OrElse 
     line.StartsWith("; Name = ") OrElse 
     line.StartsWith("; top = ") OrElse 
     line.StartsWith("; Visible = ") Then 

     output.AppendLine(line) 

    End If 

Next 
+0

@Frank。这个答案有帮助吗?如果是这样,你可以接受答案。关于为什么/如何接受答案,请参阅http://stackoverflow.com/faq。 – 2011-01-07 14:50:40