我有一个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”行吗? 或者也许每个关于单词的数据都可以在某些数据结构中,我可以以某种方式从文件中读取,更新它然后将其写入相同的位置?
提前致谢,
格雷格
答案 0 :(得分:1)
您可以使用
在XML中编码相同的信息<words>
<word name="a">
<text id="1">
<place id="2" />
<place id="3" />
</text>
...
</word>
...
</words>
正如您所看到的,XML与您的文本格式具有相同的问题:更新需要重写,因此它不会像您希望的那样提供帮助。
考虑到你问题中的样本,我假设你没有索引一个巨大的语料库。如果是,请按以下步骤执行更新:
如果您的语料库非常大,则基于文本的索引不合适。考虑使用真实的数据库。
答案 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>>> .
使用一个词典,键将是你的词,价值将是另一个带有文本号和位置的词典...... 你可以通过这种方式将所有这些归为一般......