Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取一个文本文件,直到一行包含一些字符串文件,然后继续读取下一行,直到遇到另一个字符串_C#_Filestream_Var_Using - Fatal编程技术网

C# 读取一个文本文件,直到一行包含一些字符串文件,然后继续读取下一行,直到遇到另一个字符串

C# 读取一个文本文件,直到一行包含一些字符串文件,然后继续读取下一行,直到遇到另一个字符串,c#,filestream,var,using,C#,Filestream,Var,Using,我必须读取一个文本文件,如果行包含“.engineering$name”,则查找包含“.default”的行,并对该行执行一些操作。我需要一直阅读这些行,直到在一组行中找到“.default”。(在我点击下一个“.engineering”之前,这一组就像是)。下一个“.engineering$name”的循环再次按此方式继续 注: “.engineering”关键字是固定字符串,$name动态读取, “.default”是固定字符串 我能够完成第一部分,即阅读包含“.engineering$na

我必须读取一个文本文件,如果行包含“.engineering$name”,则查找包含“.default”的行,并对该行执行一些操作。我需要一直阅读这些行,直到在一组行中找到“.default”。(在我点击下一个“.engineering”之前,这一组就像是)。下一个“.engineering$name”的循环再次按此方式继续

注: “.engineering”关键字是固定字符串,$name动态读取, “.default”是固定字符串

我能够完成第一部分,即阅读包含“.engineering$name”的行 我无法获得下一部分的逻辑,在找到下一个“.default”之前,我会找到它

正在C#中查找此逻辑的逻辑或代码。多谢各位

代码:

var nextLine是包含“.default”的行。我编写了类似immidate的代码,下一行是finding“.engineering”is having“.default”。但情况并非总是如此。“.default”可以在点击下一行“engineering”之前出现在任何行中

我希望问题陈述清楚。

试试下面的代码-

using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
        using (var reader = new StreamReader(stream))
        {
            while (!reader.EndOfStream)
            {
                string[] def_arr = null;
                var line1 = reader.ReadLine();
                if (line1.Contains(".engineering " + name + " ") && !reader.EndOfStream)
                {
                    var nextLine = reader.ReadLine(); // nextLine contains ".default"
                    while (!nextLine.Contains(".default") && !reader.EndOfStream)
                    {
                        nextLine = reader.ReadLine();
                    }
                    def_arr = nextLine.Split(' ');
                    def_val = def_arr[1].Replace("\"", "");
                    port_DefaultValues.Add(name + ", " + def_val);
                }
            }
        }
我刚刚添加了一个循环,它将一直读取下一行,直到遇到
.default
。请记住,若在文件的其余部分找不到异常,它将抛出异常

试试这个代码-

using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
        using (var reader = new StreamReader(stream))
        {
            while (!reader.EndOfStream)
            {
                string[] def_arr = null;
                var line1 = reader.ReadLine();
                if (line1.Contains(".engineering " + name + " ") && !reader.EndOfStream)
                {
                    var nextLine = reader.ReadLine(); // nextLine contains ".default"
                    while (!nextLine.Contains(".default") && !reader.EndOfStream)
                    {
                        nextLine = reader.ReadLine();
                    }
                    def_arr = nextLine.Split(' ');
                    def_val = def_arr[1].Replace("\"", "");
                    port_DefaultValues.Add(name + ", " + def_val);
                }
            }
        }


我刚刚添加了一个循环,它将一直读取下一行,直到遇到
.default
。请记住,若在文件的其余部分找不到异常,它将抛出异常

请输入您的代码。我们可以帮助您解决问题,但为此,您需要展示您已经尝试过的内容。您需要为此输入代码。我已经添加了代码。使用与查找
.engineering
相同的逻辑。您可以使用另一个嵌套循环来实现这一点。我不知道如何将该逻辑放入代码中。你能把那个的代码贴出来吗@我们可以帮助您解决问题,但为此,您需要展示您已经尝试过的内容。您需要为此输入代码。我已经添加了代码。使用与查找
.engineering
相同的逻辑。您可以使用另一个嵌套循环来实现这一点。我不知道如何将该逻辑放入代码中。你能把那个的代码贴出来吗@这是一个陷阱是的它很有效。。。但我还需要处理下一组行中是否不存在.default。修改while循环的条件一致是,部分工作…您的代码将在下一行中搜索.default,直到文件结束。但我只想搜索到下一个“.engineering”。如果找不到,则将def_val设置为null。我想到了使用goto语句。我也写了相应的逻辑。现在它完全可以工作了。谢谢你们所有试图帮助我的人。哦,是的,它起作用了。。。但我还需要处理下一组行中是否不存在.default。修改while循环的条件一致是,部分工作…您的代码将在下一行中搜索.default,直到文件结束。但我只想搜索到下一个“.engineering”。如果找不到,则将def_val设置为null。我想到了使用goto语句。我也写了相应的逻辑。现在它完全可以工作了。谢谢所有帮助我的人。