精簡的美麗sql
/* * Sql腳本壓縮類。 * 去掉sql語句中多餘的空格,以減小sql腳本的文本長度 * * Author : goldli@163.com * DateTime : 2015/07/03 */ using System.Text.RegularExpressions; namespace Sp.Net.Tools { internal class SqlCompressor { public static string Compress(string source) { if (string.IsNullOrEmpty(source)) return "無數據"; //1.去掉全部註釋; 行註釋 與 塊註釋 source = LineComment(source); source = BlockComment(source); //2.壓縮空格 source = MultipleSpace(source); //3.壓縮標點符號 source = Punctuates(source); return source; } /// <summary> /// 去掉行註釋 /// </summary> /// <param name="source"></param> /// <returns></returns> private static string LineComment(string source) { //去掉 "--" 開頭的行 var x = Regex.Replace(source, "--.*", "", RegexOptions.IgnoreCase | RegexOptions.Multiline); return x; } private static string BlockComment(string source) { //去掉 "/* */" 的行 var x = Regex.Replace(source,@"\/\*.*\*\/","",RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); return x; } private static string MultipleSpace(string source) { var x = Regex.Replace(source,@"\s{2,}"," ",RegexOptions.IgnoreCase | RegexOptions.Multiline); return x; } /// <summary> /// 空格在標點符號的兩側 /// </summary> /// <param name="source"></param> /// <returns></returns> private static string Punctuates(string source) { var x = Regex.Replace(source,@"\s*([\)\(\,\;\.\:\'\""\=\+\-\*\/\>\<\!\|\~\^])\s*","$1",RegexOptions.IgnoreCase | RegexOptions.Multiline); return x; } } }