【问题标题】:How To read Block of text in a text file如何读取文本文件中的文本块
【发布时间】:2022-01-07 20:17:16
【问题描述】:

我有一个文件,我必须在其中读取 startscriptexpression$ 和 Finish scriptExpression$ 之间的文本,并且还要读取 startupdatedescription$ 和 startupdatedescription$[

问题是我想以更简洁的格式重新编写代码。

My Code:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace Vesrion
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\Development\Desktop\Read\Test.txt";
            using (var reader = new StreamReader(path))
            {
                var textInBetween = new List<string>();
                var ListOFDescription = new List<string>();
                string NewString = "";

                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                  //Reads First line,
                    switch (line)
                    {
                        case "StartScriptExpression$":
                            continue;
                        case "FinishScriptExpression$":
                            if (line.Contains("FinishScriptExpression$"))
                            {
                                line = "";
                            }
                            string Something = string.Join("", textInBetween);
                            textInBetween = line.Split(',').ToList();
                            string[] lines = Something.Split(
                             new string[] { Environment.NewLine },
                                 StringSplitOptions.None);
                            foreach (var S in lines)
                            {
                                ListOFDescription.Add(S);
                                Console.WriteLine(S);
                            }

                            NewString += ListOFDescription;
                           
                        break;
                        case "StartUpdateDescription$":
                            //Console.WriteLine(Environment.NewLine);
                            continue;
                        case "FinishUpdateDescription$":
                           // Console.WriteLine(Environment.NewLine);
                            continue;
                        default:
                            textInBetween.Add(line);
                            //Console.WriteLine(line);
                            break;
                           
                    }
                }

            }

        }

    }
}
  • 开始和结束表达式中的文本必须在字符串数组列表中。

  • startupdatedescription 和 finishupdatedescription 中的文本必须是字符串。

    .

【问题讨论】:

  • 不确定,但使用很少的 LINQ 方法和正则表达式似乎可以按预期工作。在这里试试:dotnetfiddle.net/pxBAMv
  • 看起来很棒,但我希望来自 foreach 的 sql 命令位于单个字符串中,例如 [0] 创建表..... [1] 创建表..... [2 ]更改表注册...... [3]添加自动编号......
  • 您想将 4 个字符串(命令)合并为 1 个字符串吗?
  • 列表中 startscriptexpression 和 finishscriptexpression 之间的最终输出必须如下: [0]- CREATE TABLE [CompanyBranch]([CompanyBranchID] [int] IDENTITY(1,1) ..... [ 1]- CREATE TABLE [CompanyBranchDept]([CompanyBranchDeptID] [int] IDENTITY(1,1) .. [2]-ALTER TABLE REGISTRATION_FILE_REFERENCING ADD BranchLink bit [3]-ALTER TABLE EASY_FILE ADD Remarks varchar(250)
  • 我想将所有开始和结束表达式连接成 1 个字符串。

标签: c# linq console-application text-files streamreader


【解决方案1】:

一种方法是使用正则表达式https://dotnetfiddle.net/pxBAMv

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2011-11-21
  • 1970-01-01
  • 2011-07-27
  • 2019-03-12
  • 1970-01-01
  • 2013-01-04
  • 2013-02-23
相关资源
最近更新 更多