0

请告知我如何在我的存储过程中运行时删除注释掉的代码 /* .. */。以下面的例子为例:如果我的SP发现下面这种方式的注释代码垃圾,包括注释符号在内的所有注释代码都将被删除。

/*
    INSERT INTO MATERIAL.GTT_DMD
      (
      asof_src_dt
      , asof_src_tm
      )
        SELECT
       asof_src_dt
       , CAST (asof_src_ts AS  TIME(0)) AS asof_src_tm
     FROM  DEMAND.v_supl SNP_DMD
*/

感谢您的支持,我找到了正则表达式

/\*[\w\W]*?(?=\*/)\*/

你能帮忙看看这是否是删除代码的最佳方式。谢谢。

public void DeleteCommentedCode(string filePath)
    {
        StreamReader input = new StreamReader(filePath);

        Regex pattern = new Regex("/\*[\w\W]*?(?=\*/)\*/");            

          StreamReader streamReader = new StreamReader(filePath);
        StreamWriter streamWriter = new StreamWriter(filePath + ".tmp");

        while (!streamReader.EndOfStream)
        {
            string data = streamReader.ReadLine();
            if(pattern.IsMatch(data))
            {
                data = data.Replace(data, ""); // Replace with empty 
                streamWriter.WriteLine(data);
            }

        }

        streamReader.Close();
        streamWriter.Close();
    }
4

1 回答 1

1

假设您的意思是从存储过程中删除评论,这里有一篇关于提取 SP 内容的帖子。

C#/SQL 获取所有存储过程及其代码

要删除您可以尝试使用正则表达式的注释,这里有一篇关于使用一些 RegEx 示例清理 SQL 语句的好文章。

http://larrysteinle.wordpress.com/2011/02/09/use-regular-expressions-to-clean-sql-statements/

于 2012-09-10T06:55:44.940 回答