/*
* 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;
}
}
}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

