【发布时间】:2018-11-27 13:05:00
【问题描述】:
我需要找出两个文本文件的哪一行是我最长的文本片段。我找到了,但我不知道如何找到我的文本片段在哪几行中。也许我需要以某种方式更改我的 ReadFile 方法?
string[] Fragment(string[] wordsWithSeparatos1, string[] wordsWithSeparators2)
{
int place = 0;
string[] fragment = new string[1000];
for (int i = 0; i < wordsWithSeparatos1.Length; i++)
{
for (int j = 0; j < wordsWithSeparators2.Length; j++)
{
if (wordsWithSeparatos1[i] == wordsWithSeparators2[j])
{
fragment[place] += wordsWithSeparatos1[i] + ' ' ;
i++;
}
else
{
if (fragment[place] != null)
{
place++;
}
}
}
}
return fragment;
}
void LongestFragment(string[] fragment)
{
foreach (var item in fragment.OrderByDescending(x => fragment.Length).Take(1))
{
Console.WriteLine(item);
}
}
string[] ReadFile(string fn)
{
char[] space = { ' ' };
string lines = File.ReadAllText(fn, Encoding.GetEncoding(1257));
string[] wordsWithSeparators = new string[1000];
wordsWithSeparators = lines.Split(space, StringSplitOptions.RemoveEmptyEntries);
return wordsWithSeparators;
}
文本1.txt: Lorem Ipsum 只是印刷和排版行业的虚拟文本。 自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。 它不仅经历了五个世纪,而且经历了电子排版的飞跃,基本保持不变。 它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 表的发布而得到普及,最近又随着 Aldus PageMaker 等桌面出版软件(包括 Lorem Ipsum 的版本)而普及。 文本2.txt: Lorem Ipsum 只是印刷和排版行业的虚拟文本。 自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。
【问题讨论】:
-
您的行有 \r\n 或 \n 行尾字符?
-
不,不是。我会尽快上传文本文件
-
好的,我看到你在字符串中加载了所有文本文件,但是如果你的文本没有 eol,你只有一行??
-
现在是的。我想我需要使用 File.ReadAllLines。在第一个文本文件中我有 4 行,在第二个 2
-
是的,您通过读取和拆分每一行来修改程序的逻辑,并将拆分结果添加到 list
(您使用 File.ReadLine 方法)。因此,每次片段较长时,您都可以保留行数或内容
标签: c#