2015-12-26 14 views
0

如何在C#中編寫自定義解析器來解析由自定義標記格式化的TEXT文件? WITHOUT使用XML /第三方利布斯在C#中解析NON-XML語法化的TEXT文件

[product] 
*name*Name1*/name* 
*cost*100*/cost* 
[/product] 
[product] 
*name*Name2*/name* 
*cost*120*/cost* 
[/product] 
... 

我試圖解析它,我可以存儲「名稱1」和「名稱2」中的字符串的方式等

+1

我真的沒有看到創建自己的解析器。只需使用XML甚至JSON!爲什麼你想首先發明一種全新的格式?這是某種任務還是什麼? – Sweeper

+0

是的,這是某種作業。一些幫助會很好,而不是要求我再次使用XML或JSON。如果可以的話,我已經擁有了。 – Sam

+0

@Shaharyar什麼?如果這就是你要求的,我在第二和第四個產品中有一個關閉每個產品組的產品。 – Sam

回答

1

這裏有一個哈克的方式來做到這一點。

讓我只給你一些關於這個非常 hacky解決方案的一般準則。

我看到您的格式與XML非常相似。因此,您可以循環訪問字符串並保留一個布爾變量flag,用true進行初始化。

For each character in the string, 
    if it is a `[`, replace it with `<`. 
    If it is a `]`, replace it with `>`. 
    If it is a `*`, check the flag. 
     If the flag is true, replace it with `<`. 
     If the flag is false, replace it with a `>`. 
     Then, flag = !flag; 

現在您已經有了一個xml表示法。您可以使用內置於.NET Framework中的XML解析器來解析它。沒有使用第三方庫!輸入文本仍然是原始格式,不會更改爲XML!

REQUIREMENT MET!

+0

這工作。唯一的問題是,讓我們說,我的任務是編寫一個自定義分析器,部分要求是完全拋棄XML/JSON。無論如何,謝謝你的答案。 – Sam

+0

@SamuelNg也許你可以嘗試學習正則表達式。那些幫助寫這些解析器的_lot_! – Sweeper

+0

我一直在尋找正則表達式,似乎是可以解決我的問題的東西。謝謝! – Sam