2017-04-08 104 views
1

我目前正在研究Windows窗體(C#)項目,我需要將信息存儲在多個文本文件中。只是這樣做可能沒有問題,我會在Google上得到大量結果。然而,我似乎無法找到一種方法來排除和基於語法從文本文件中包含的東西。從文本文件中獲取語法

程序本身應該根據訂單中包含的內容創建口頭協議。所以我只需要捕獲文件的特定部分;即:

NewCustomer.txt

#Introduction# 
Today we have decided that you are our customer... Yay! 
-Break- 
#BuyFood# 
You have decided to buy %foodItem% from us for the price of %priceInDollars% dollars. 
-Break- 
#BuyCar# 
You have decided to buy a %selectedCar% from us for the price of %priceInDollars% dollars. 
-Break- 


#Ending# 
My name is %agentName%, thank you for your purchase! 
-Break- 

然後,我想從這個文件中提取信息和線路的彈出窗口線鋪設。所以代理人會看到類似的東西;

---AGREEMENT-------------------------------------------------|_|[]|X| 
| Today we have decided that you are our customer... Yay!   | 
| You have decided to buy pizza from us for the price of 12 dollars.| 
| My name is Some Dude, thank you for your purchase!    | 
|                 | 
|                [OK] | 
|___________________________________________________________________| 

不過,我完全停留在這一點上,和我從來沒有使用TEXTFILES或取功能任我早期項目的,我不知道從哪裏開始。
我該如何去完成這樣的事情?

請注意,語法和所有變量都是示例。我不知道這樣一個文件的正確語法是什麼樣的,這就是我創建的向你展示我的想法的東西。

回答

1

如果你想存儲結構化數據,文本,你有兩個選擇:JSONXML在這兩種情況下,你不必擔心正在創建和解析字符串的結構。您創建一個類:

public class MyStrings 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
} 

然後你使用例如NewtonSoft.Json或任何其他JSON或XML序列化序列化數據。

var data = new List<MyStrings>() 
{ 
    new MyStrings() 
    { 
     Id = 1, 
     Text = "Today we have decided that you are our customer... Yay!" 
    }, 
    new MyStrings() 
    { 
     Id = 2, 
     Text = "You have decided to buy {0} from us for the price of {1} dollars." 
    } 
} 

var stringToWriteInFile = JsonConvert.Serialize(data); 

結果是一個字符串,你可以在一個文件中寫入,然後做一個確切的反轉來獲取你的數據。

+0

我明白了!我對此有個疑問: 如果將來會更新協議,是否可以在Notepadpp中編輯原始XML文件,或者是否需要在該場景中編輯源代碼? – VonRiddarn

+0

jSon和XML都是人類可讀的,這意味着您可以稍後編輯它們。 XML在這方面更好。 – Emad

+0

我明白了! 我也有一個關於這個解決方案的實現的問題: 我應該在哪裏放置「data」和「stringToWriteInFile」變量? 它們應該以主要形式以某種方式實現,還是直接在MyString類中實現? 說實話,我不知道這究竟是什麼或做什麼。 有沒有關於這個地方的文檔,可以給我一些關於如何使用它的見解? – VonRiddarn