C# 正在从流读取器中删除格式化(\t\r)

C# 正在从流读取器中删除格式化(\t\r),c#,.net,sql,C#,.net,Sql,我正在使用StreamReader(最终将通过OdbcConnection,仅供参考)将使用SQLExplorer创建的.sql文件导入到我的.NET程序中。问题是,当我使用ReadToEnd()方法时,它不仅导入sql本身,而且导入所有格式。因此字符串中到处都是\r和\t等等 我一直在研究使用split或regex来分解字符串并删除不需要的比特和片段。但在投入大量精力之前,我想知道StreamReader类中是否有我遗漏的东西?有没有办法告诉它忽略格式化字符 以下是我现在掌握的代码: publ

我正在使用StreamReader(最终将通过OdbcConnection,仅供参考)将使用SQLExplorer创建的.sql文件导入到我的.NET程序中。问题是,当我使用
ReadToEnd()
方法时,它不仅导入sql本身,而且导入所有格式。因此字符串中到处都是
\r
\t
等等

我一直在研究使用split或regex来分解字符串并删除不需要的比特和片段。但在投入大量精力之前,我想知道StreamReader类中是否有我遗漏的东西?有没有办法告诉它忽略格式化字符

以下是我现在掌握的代码:

public static Object SQLQueryFileCall(String SQLQueryFileName){

        string SQLQuery = "";
        string directory = System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location);
        SQLQueryFileName = directory + "\\" + SQLQueryFileName;

        //read in the file and pass to ODBC, return a Object[] of whatever comes back...
        try{
            using (StreamReader myStreamReader = new StreamReader(SQLQueryFileName)) {

                SQLQuery = myStreamReader.ReadToEnd();
                Console.WriteLine(SQLQuery);
            }
        }
        catch (Exception e){
            //Find the error
            Console.WriteLine("File could not be read:");
            string error = e.Message;
            MessageBox.Show(error);
            return null;
        }
}
请随意提供任何关于代码的建议,因为我是新来的

但是是的,我只是希望StreamReader类中有一个我不理解的方法。我浏览了微软的在线文档,我觉得我已经把它看得很清楚了,但话说回来,我是新来的,也许这个概念跳过了我的脑袋

有什么帮助吗

注:在某些行的中间有多个<代码> \t>代码,它们确实需要被删除。因此,使用修剪将…至少是棘手的

SQLQuery = Regex.Replace(SQLQuery, @"\t|\n|\r", "");
更好地使用,因为您可以删除SQL插入的内容:

using (StreamReader reader = new StreamReader(fileName)) 
{
   String line;
   List<string> lines = new List<string();

   while ((line = myStreamReader.ReadLine()) != null)
       SQLQuery += line.Trim() + "\n";
}
使用(StreamReader=newstreamreader(文件名))
{
弦线;
列表行=新列表
更好地使用,因为您可以删除SQL插入的内容:

using (StreamReader reader = new StreamReader(fileName)) 
{
   String line;
   List<string> lines = new List<string();

   while ((line = myStreamReader.ReadLine()) != null)
       SQLQuery += line.Trim() + "\n";
}
使用(StreamReader=newstreamreader(文件名))
{
弦线;

List lines=new List嗯,
myStreamReader.ReadToEnd();
将为您提供一切。消除大多数不必要的空白的最简单方法是逐行读取,然后简单地
.Trim()
每一行

 using (StreamReader myStreamReader = new StreamReader(SQLQueryFileName)) 
 {
    string line;
    List<string> lines = new List<string();

    while ((line = myStreamReader.ReadLine()) != null)
        lines.Add(line.Trim());

    SQLQuery = string.Join("\n", lines);
    Console.WriteLine(SQLQuery);
 }
使用(StreamReader myStreamReader=newstreamreader(SQLQueryFileName))
{
弦线;

List lines=new List嗯,
myStreamReader.ReadToEnd();
将为您提供一切。消除大多数不必要的空白的最简单方法是逐行读取,然后简单地
.Trim()
每一行

 using (StreamReader myStreamReader = new StreamReader(SQLQueryFileName)) 
 {
    string line;
    List<string> lines = new List<string();

    while ((line = myStreamReader.ReadLine()) != null)
        lines.Add(line.Trim());

    SQLQuery = string.Join("\n", lines);
    Console.WriteLine(SQLQuery);
 }
使用(StreamReader myStreamReader=newstreamreader(SQLQueryFileName))
{
弦线;
列表行=新列表
如果是显示问题而不是内容问题,我想您可以使用WPF和RichTextBox


如果是显示问题而不是内容问题,我认为您可以使用WPF和RichTextBox。

根据定义,SQL在代码中不应该出现空白(如制表符和换行符)问题。请首先验证您的实际SQL是否正确


此外,盲目剥离空白可能会对脚本中包含的文本数据产生影响;如果字符串文字包含制表符,会发生什么情况?

根据定义,SQL在代码中不应该出现制表符和换行符之类的空白。请先验证实际SQL是否正确


此外,盲目地去除空白可能会对脚本中包含的文本数据产生影响;如果您的字符串文字包含制表符,会发生什么情况?

这在2020年帮助了我,万一有人正在寻找它

使用(StreamReader sr=新的StreamReader(stream))
{
返回Regex.Replace(sr.ReadToEnd().Trim(),@“\s”和“”);
}

这就是在2020年帮助我的东西,万一有人在找这个

使用(StreamReader sr=新的StreamReader(stream))
{
返回Regex.Replace(sr.ReadToEnd().Trim(),@“\s”和“”);
}

为什么你甚至需要去掉格式?你不能原封不动地使用它吗?好吧,现在我得到了一些类似于
SELECT\t*\rFROM\tMyTable
等的东西。当我把它扔进OdbcConnection,然后它被扔进DB中,我…嗯,它不喜欢它们。它更喜欢一个空白。@AdamMaras-你是我的朋友嗯,这实际上是一个id10t错误。我忘了我在代码中插入了一行不起作用的代码,事实上,这在我的SQL编辑器中给了我完全相同的错误。所以我删除了这一行,并使用了我的字符串、格式和所有…我现在有一部分想删除这个问题,但这个问题仍然是合法的,即使它不是问题。所以我就不说了……我会继续沿着这些思路添加一个答案,只是为了引导其他人朝正确的方向前进。为什么你甚至需要去掉格式?你不能按原样使用它吗?好吧,现在我得到了一些类似于
SELECT\t*\rFROM\tMyTable
等的东西。当我把它放到OdbcConnection中,它就会被抛出n转到DB给我…嗯,它不喜欢它们。它更喜欢空白。@AdamMaras-你是对的,这实际上是一个id10t错误。我忘了我在代码中插入了一行不起作用的代码,事实上,这在我的SQL编辑器中给了我完全相同的错误。所以我删除了这行,它拿走了我的字符串、格式和所有…部分我的大多数人现在想删除这个问题,但这个问题仍然是合法的,即使它不是问题所在。所以我就不提了……我会继续添加一个沿着这些思路的答案,只是为了引导其他人朝着正确的方向前进。我不是反对者,但OP明确表示,首先不喜欢正则表达式。对,这是正确的一个糟糕的想法…当两个不同的标识符/关键字仅用换行符或制表符分隔时会发生什么?这将删除它们之间必要的空白。公平地说,这可能是Zarathos礼貌地告诉我Regex真的没那么难,也许我应该像牛仔那样做;-)。看在那一行代码中,Regex似乎远没有我第一次读到它时那么吓人。如果它说
(SQLQuery,@“\t\n\r”,”)
,那么
\t
会被空格替换吗