正在从流读取器中删除格式(tt)



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

我一直在研究使用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,它们确实需要移除。因此,使用修剪将。。。至少要狡猾一点。

好吧,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);
 }

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

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

 using (StreamReader myStreamReader = new StreamReader(SQLQueryFileName)) 
 {  
    while ((line = myStreamReader.ReadLine()) != null)
    {
        Console.WriteLine(line.Trim().Replace(@"t"," ")
    }
 }

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

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";
}

这是我在2020年的帮助,以防有人在寻找这个

using (StreamReader sr = new StreamReader(stream))
{
   return Regex.Replace(sr.ReadToEnd().Trim(), @"s", "");
}

最新更新