提问人:shorty 提问时间:3/27/2022 最后编辑:Andrew Mortonshorty 更新时间:3/27/2022 访问量:95
C# 使用正则表达式将多个 .txt 文件合并为一个 .txt 文件
c# merging multiple .txt files into one .txt file with regex
问:
我有一个巨大的问题。我需要将两个 .txt 文件合并为第三个文件,每行一行。在此之前,我需要修剪第一个文件最后两个字符的每一行末尾,并修剪第二个文件的前两个字符。在合并之前,我必须在第一个文件的末尾和第二个文件的开头找到匹配项。也就是说,第一个文件应该是句子的左部分,第二个文件应该是句子的右部分。例:
文件 1 内容(第一行):
很久以前,我们的银河系有一个真正多事之秋:介于
文件 2 内容(第一行):
多事之秋:在大约130亿到80亿年前,它艰难而快速地生活着,与其他星系合并并消耗大量氢气形成恒星。
文件 3 的内容应为(第一行):
很久以前,我们的银河系有一个真正多事的生命:大约在130亿到80亿年前,它艰难而快速地生活着,与其他星系合并并消耗大量氢气形成恒星。
因此,简而言之,我必须在这个文本示例中从第二个文件修剪“多事之秋:之间”,并修剪第一个文件的最后两个和第二个文件的最后两个,并最终将第一个和第二个文件的文本合并到第三个文件中。提前致谢!
namespace ConsoleApplication1
class Program
{
static void Main()
{
string[] readleft = File.ReadAllLines(@"C:\Users\J\Desktop\files\left.txt");
string[] readright = File.ReadAllLines(@"C:\Users\J\Desktop\files\right.txt");
using (StreamReader swo = new StreamReader(@"C:\Users\J\Desktop\files\left.txt"))
{
//left file is first, second is right and third is output
using (StreamReader swot = new StreamReader(@"C:\Users\J\Desktop\files\right.txt"))
{
for (int x = 0; x < readleft.Length || x < readright.Length; x++)
{
Console.WriteLine("{0}{1}",swo.ReadLine(),swot.ReadLine());
Match m = Regex.Match(swo.ToString(), swot.ToString());
if(m.Success)
Console.WriteLine("Found '{0}' at position '{1}'", m.Value.ToString(), m.Index);
}
}
}
}
}
顺便说一句,为什么它向我显示“System.IO.StreamReader”而不是匹配?
答:
0赞
tymtam
3/27/2022
#1
这是一种易于理解的简单方法。
var left = "A very long ago, our Milky Way had a truly eventful life: between";
var right = "eventful life: between about 13 and 8 billion years ago, it lived hard and fast, merging with other galaxies and consuming a lot of hydrogen to form stars.";
int common = 0;
for(int i = 1; i < Math.Min(left.Length, right.Length); i++)//Please note that a binary search would be much faster
{
var partToCheck = right.Substring(0,i);
if(left.EndsWith(partToCheck))
{
common = i;
Console.WriteLine($"Common part: '{right.Substring(0,i)}'");
break;
}
}
var merged = left + right.Substring(common);
此打印
Common part: 'eventful life: between'
评论
0赞
shorty
3/27/2022
就是这样!非常感谢!我无法用言语表达很多东西对我来说意味着什么!
上一个:与体系结构匹配的类似数据源
评论
readleft
readright