首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#将多个.txt文件合并为一个带有regex的.txt文件

c#将多个.txt文件合并为一个带有regex的.txt文件
EN

Stack Overflow用户
提问于 2022-03-26 19:49:58
回答 1查看 80关注 0票数 0

我有个大问题。我需要将两个.txt文件合并到第三个文件中,每个文件逐行。我需要之前的每一行修剪结束的第一个文件,最后两个字符,并修剪前两个字符的第二个文件。在合并之前,我必须在第一个文件的末尾和第二个文件的开头找到匹配。即,第一档应该是句左部分,第二档是句子的右边部分。示例:

文件1内容(第一行):

很久以前,我们的银河系有一个真正的多事之秋:

文件2内容(第一行):

生命:大约在130亿至80亿年前,它生活艰难而迅速,与其他星系合并,并消耗大量氢形成恒星。

文件3的内容应该是(第一行):

很久以前,我们的银河系有一个真正重要的生命:大约在130亿至80亿年前,它生活艰难而迅速,与其他星系合并,并消耗大量氢形成恒星。

因此,简而言之,在这个文本的例子中,我必须修剪第二个文件中的“事件生命:”从第二个文件到第一个和第二个文件的最后两个,最后将第一个和第二个文件中的文本合并为第三个文件。提前感谢!

代码语言:javascript
复制
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“而不是匹配呢?

EN

回答 1

Stack Overflow用户

发布于 2022-03-27 11:28:55

这是一个很容易理解的简单方法。

代码语言:javascript
复制
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);

这个指纹

代码语言:javascript
复制
Common part: 'eventful life: between'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71631325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档