2011-10-21 75 views
1

我需要解析CSV文件,其中文本塊按照特定規則以不同方式處理,例如,從CSV文件中讀取文本塊 - vb.net

userone,columnone,columntwo 
userthirteen,columnone,columntwo 
usertwenty,columnone,columntwo 

customerone,columnone<br> 
customertwo,columntwo<br> 

singlevalueone 
singlevaluetwo 

singlevalueone_otherruleapplies 
singlevaluethree_otherruleapplies 

將對每個文本塊進行分組,以便前三行將使用某些規則進行分析等等。請注意,最後兩組只有一列,但每組必須以不同的方式處理。

我有機會向客戶提出文件的格式,所以我想提出以下建議。

[group 1] 
userone,columnone,columntwo 
userthirteen,columnone,columntwo 
usertwenty,columnone,columntwo 

[group N] 
rowN 

一種類似於幾年前的INI文件。不過,我想聽聽你的意見,因爲我認爲必須有更好的方式來處理這個問題。

我建議使用XML,但客戶更喜歡文本文件。

歡迎任何建議。

m0dest0。

Ps。使用VB.net和VS 2008

回答

1

如果每行都具有相同的格式,則可以使用正則表達式組設置爲枚舉行模式,如果格式不限制爲單行,則可以使用枚舉多行。對於多行中的每一行,您可以在您的模式中包括\ n以跨越多行來查找您的模式。如果它在一行中不需要包含\ n,那麼在您的正則表達式匹配模式中也可以使用回車換行。

vb.net以及許多其他現代編程語言對分組操作有廣泛的支持。您可以使用索引組或命名組。

每個名稱,如任何你需要將其命名將是這種格式頭1或:<myname>
請參閱此鏈接的詳細信息:How do I access named capturing groups in a .NET Regex?

祝你好運。