|
|
1
1
按字母顺序对要匹配的字符串列表进行排序,然后构建一个索引数组,该数组告诉您作为其中一个字符串的起始字符的每个字符列表的起始位置,根据种类的广度以及匹配是否区分大小写,可以索引到第二个字符。 用流逐字符读取文件以最小化内存占用,检查索引数组以查看该字符在字符串列表中的起始位置和结束位置,以便可以拉出该字符页(如果有以这些字符组合开头的内容)。然后继续在页面内部进行筛选,直到剩下一个匹配项,下一个字符与0匹配。 从要匹配的字符串列表中删除该字符串,如果需要,将其放入另一个列表中。然后开始检查下一个字符的索引,并在每次遇到不匹配的字符时继续这样做。 索引为您提供了一个更有效的聚合,以最小化对其进行迭代的项数。 这可以为您提供两个字符的深度索引:
然后要在列表中找到起始索引,只需访问:
|
|
|
2
3
如果您想用最少的内存完成:
如果您想快速完成: 将整个文件加载到内存中,不必解析它,只需搜索每个字符串。 编辑
|
|
|
3
2
建议:作为文本加载,使用正则表达式来提取所需的字符串(我假设它们用特定的标记括起来),并用它们构建一个哈希列表。您可以使用列表来检查是否存在。 |
|
|
4
2
下面是一个使用Linq的简单解决方案。运行速度足够快,可以一次性使用:
|
|
|
5
1
如果是这样,你可以利用Xml.Xml文档,从那里,Xml.XmlNode.SelectNodes文件(字符串),使用xpath导航文档。我不知道文档中存在什么类型的信息,但是您对第二阶段的措辞方式给出了这样的想法:有时C:\上的路径和E:\上的路径都存在?如果是这样的话,就简单到两个IO.File.Exists存在检查,然后IO.File.Delete文件( ). 我的意思是,不要在XML文档中搜索N次字符串,而是在文档中搜索并删除重复项,以便只在文档中运行一次。
|
|
|
6
0
从XML中读取每个字符串并将它们写入
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |