在C#中更新txt / xml文件中的数据

时间:2009-12-19 17:11:38

标签: c# xml file data-structures

我有一个txt文件,其中包含一些如下所示的数据:

a:1(2,3) 55(33,45,67)
b:2(1,33,456) 4(123,12444)

这意味着单词“a”出现在地方2和3的文本1中以及出现在地方33,45和67中的文本55中。

我有一些文本,我遍布这些文本,如果我看到文字中出现“a”这个词,那么我需要相应地更新上面的文本文件。 (关于“a”的数据当然可以大于一行)

如何更新“a”所在的行而不会损坏“b”所在的行? 我在stackoverflow中看到,我可以使用xml文件。如果我使用xml文件,我可以读取整个“a”数据,更新它然后再次写入而不会损坏“b”行吗? 或者也许每个关于单词的数据都可以在某些数据结构中,我可以以某种方式从文件中读取,更新它然后将其写入相同的位置?

提前致谢,

格雷格

3 个答案:

答案 0 :(得分:1)

您可以使用

在XML中编码相同的信息
<words>
  <word name="a">
    <text id="1">
      <place id="2" />
      <place id="3" />
    </text>
    ...
  </word>
  ...
</words>

正如您所看到的,XML与您的文本格式具有相同的问题:更新需要重写,因此它不会像您希望的那样提供帮助。

考虑到你问题中的样本,我假设你没有索引一个巨大的语料库。如果是,请按以下步骤执行更新:

  1. 将当前索引文件读入您​​用于索引的数据结构中。
  2. 更新您的数据结构,以反映语料库中新添加文本的内容。
  3. 将整个更新索引的内容写入新的临时文件。
  4. 成功时,将临时文件重命名为步骤1中的主索引文件。
  5. 如果您的语料库非常大,则基于文本的索引不合适。考虑使用真实的数据库。

答案 1 :(得分:0)

如果将此文本文件更改为XML,则可以使用LINQ to XML轻松操作该文件。

看看here。具体来说,manipulation section

答案 2 :(得分:-1)

使用:string.Insert

但我会使用2D数组int Places [text] [place]。

你的问题与XML无关,虽然你可以使用XML,一个简单的数据结构,会更简单....

编辑:

好吧用这个:

 dictionary<string,dictionary<int,list<int>>>  .

使用一个词典,键将是你的词,价值将是另一个带有文本号和位置的词典...... 你可以通过这种方式将所有这些归为一般......