2017-04-08 108 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