/* * Sql脚本压缩类。 * 去掉sql语句中多余的空格,以减少sql脚本的文本长度 * * Author : [email protected] * 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; } } }
时间: 2024-11-10 13:46:11