C# 格式化CodeHighlighter生成的SQL脚本高亮着色源码(CSFramework.com原创)
C# 格式化CodeHighlighter生成的SQL脚本高亮着色源码(CSFramework.com原创)
调用CodeHighlighterEngine.GenerateHtmlInline方法生成的SQL脚本高亮代码没有排版(没有代码格式化),因此自己实现C#代码排版功能,效果一般吧,总比没有排版好多了。
C# Code:
/// <summary>
/// SQL脚本代码缩进,排版,格式化
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
private static string IndentCodeSql(string SQL)
{
bool firstAs = false;
bool firstBegin = false;
bool firstAsBegin = false;
System.Text.StringBuilder retCode = new System.Text.StringBuilder();
int indent = 0;
string NoHtml;
string[] lines = SQL.Split('\n');
foreach (string line in lines)
{
NoHtml = RemoveHTML(line.Trim());
if (NoHtml == "AS" && firstAs == false) firstAs = true;
if (NoHtml == "BEGIN" && firstBegin == false) firstBegin = true;
if (NoHtml.Replace(" ", "").ToUpper() == "ASBEGIN" && firstAsBegin == false) firstAsBegin = true;
//代码段结束,减少缩进
if (line.Trim() == ")" || line.Trim().ToUpper() == "END")
{
if (indent > 0) indent--;
}
string formatedLine = line.Trim();
for (int i = 0; i < indent; i++)
{
formatedLine = " " + formatedLine;//指表符
}
//定义符合
if (NoHtml.StartsWith("@")) formatedLine = " " + formatedLine;//指表符
retCode.Append(formatedLine + "\n");
//代码段开始,增加缩进
if (line.Trim() == "(" || line.Trim().StartsWith("(") || line.Trim().EndsWith("(") || line.Trim().ToUpper() == "BEGIN" || line.Trim().ToUpper().EndsWith("BEGIN"))
{
indent++;
}
// AS BEGIN, AS, BEGIN
if ((firstAs && firstBegin) || firstAsBegin)
{
indent++;
firstAs = false; firstAsBegin = false; firstAsBegin = false;
}
}
return retCode.ToString();
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// SQL脚本代码缩进,排版,格式化
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
private static string IndentCodeSql(string SQL)
{
bool firstAs = false;
bool firstBegin = false;
bool firstAsBegin = false;
System.Text.StringBuilder retCode = new System.Text.StringBuilder();
int indent = 0;
string NoHtml;
string[] lines = SQL.Split('\n');
foreach (string line in lines)
{
NoHtml = RemoveHTML(line.Trim());
if (NoHtml == "AS" && firstAs == false) firstAs = true;
if (NoHtml == "BEGIN" && firstBegin == false) firstBegin = true;
if (NoHtml.Replace(" ", "").ToUpper() == "ASBEGIN" && firstAsBegin == false) firstAsBegin = true;
//代码段结束,减少缩进
if (line.Trim() == ")" || line.Trim().ToUpper() == "END")
{
if (indent > 0) indent--;
}
string formatedLine = line.Trim();
for (int i = 0; i < indent; i++)
{
formatedLine = " " + formatedLine;//指表符
}
//定义符合
if (NoHtml.StartsWith("@")) formatedLine = " " + formatedLine;//指表符
retCode.Append(formatedLine + "\n");
//代码段开始,增加缩进
if (line.Trim() == "(" || line.Trim().StartsWith("(") || line.Trim().EndsWith("(") || line.Trim().ToUpper() == "BEGIN" || line.Trim().ToUpper().EndsWith("BEGIN"))
{
indent++;
}
// AS BEGIN, AS, BEGIN
if ((firstAs && firstBegin) || firstAsBegin)
{
indent++;
firstAs = false; firstAsBegin = false; firstAsBegin = false;
}
}
return retCode.ToString();
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
C# Code:
/// <summary>
/// C#使用正则表达式移除所有的Html标记,返回纯文本
/// </summary>
/// <param name="HtmlString"></param>
/// <returns>返回纯文本</returns>
private static string RemoveHTML(string HtmlString)
{
//删除脚本
HtmlString =
Regex.Replace(HtmlString, @"<script[^>]*?>.*?</script>",
"", RegexOptions.IgnoreCase);
//删除HTML
HtmlString = Regex.Replace(HtmlString, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"-->", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"<!--.*", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&#(\d+);", "", RegexOptions.IgnoreCase);
HtmlString.Replace("<", "");
HtmlString.Replace(">", "");
HtmlString.Replace("\r\n", "");
HtmlString = HttpContext.Current.Server.HtmlEncode(HtmlString).Trim();
return HtmlString;
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// C#使用正则表达式移除所有的Html标记,返回纯文本
/// </summary>
/// <param name="HtmlString"></param>
/// <returns>返回纯文本</returns>
private static string RemoveHTML(string HtmlString)
{
//删除脚本
HtmlString =
Regex.Replace(HtmlString, @"<script[^>]*?>.*?</script>",
"", RegexOptions.IgnoreCase);
//删除HTML
HtmlString = Regex.Replace(HtmlString, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"-->", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"<!--.*", "", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
HtmlString = Regex.Replace(HtmlString, @"&#(\d+);", "", RegexOptions.IgnoreCase);
HtmlString.Replace("<", "");
HtmlString.Replace(">", "");
HtmlString.Replace("\r\n", "");
HtmlString = HttpContext.Current.Server.HtmlEncode(HtmlString).Trim();
return HtmlString;
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
SQL脚本格式化效果:
SQL Code:
GO
/****** Object: StoredProcedure [dbo].[usp_lic_GetFunctionListByUser] Script Date: 03/02/2020 19:32:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_lic_GetFunctionListByUser]
@LicenseID VARCHAR(20)=''
AS
BEGIN
/**************************************************
功能:获取定制权限(特殊权限)
SELECT * FROM sys_ProductFunctionUser
SELECT * FROM sys_ProductFunctionAll
usp_lic_GetFunctionListByUser '0001'
***************************************************/
--返回客户基本资料
SELECT LicenseID,UserName,ContactPerson,Tel,Mobile FROM dbo.sys_ProductUser WHERE LicenseID=@LicenseID
--返回客户软件功能资料
SELECT * FROM dbo.sys_ProductFunctionUser WHERE LicenseID=@LicenseID ORDER BY ModuleID,FunctionID
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
/****** Object: StoredProcedure [dbo].[usp_lic_GetFunctionListByUser] Script Date: 03/02/2020 19:32:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_lic_GetFunctionListByUser]
@LicenseID VARCHAR(20)=''
AS
BEGIN
/**************************************************
功能:获取定制权限(特殊权限)
SELECT * FROM sys_ProductFunctionUser
SELECT * FROM sys_ProductFunctionAll
usp_lic_GetFunctionListByUser '0001'
***************************************************/
--返回客户基本资料
SELECT LicenseID,UserName,ContactPerson,Tel,Mobile FROM dbo.sys_ProductUser WHERE LicenseID=@LicenseID
--返回客户软件功能资料
SELECT * FROM dbo.sys_ProductFunctionUser WHERE LicenseID=@LicenseID ORDER BY ModuleID,FunctionID
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
SQL脚本格式化效果:
SQL Code:
USE [CSFramework_WebAPI]
GO
/****** Object: StoredProcedure [dbo].[usp_sys_Logout] Script Date: 03/02/2020 19:33:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_sys_Logout]
@UserID VARCHAR(50)
AS
BEGIN
/*************************************************
SELECT * FROM dbo.sys_LoginHistory
usp_sys_Logout '8888888xxx8'
usp_sys_Logout '8888888888'
**************************************************/
IF EXISTS(SELECT TOP 1 * FROM dbo.Api_User WHERE Account=@UserID)
BEGIN
INSERT INTO dbo.sys_LoginHistory
( Account ,
LoginType ,
LoginTime ,
DeviceType ,
DeviceMID ,
ClientVersion
)
VALUES ( @UserID, -- Account - varchar(30)
'O' , -- LoginType - varchar(1)
GETDATE() , -- LoginTime - datetime
'' , -- DeviceType - varchar(10)
'' , -- DeviceMID - varchar(50)
'' -- ClientVersion - varchar(20)
)
SELECT '' AS MSG --返回空表示成功
END ELSE
SELECT '账号不存在!' AS MSG
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
GO
/****** Object: StoredProcedure [dbo].[usp_sys_Logout] Script Date: 03/02/2020 19:33:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_sys_Logout]
@UserID VARCHAR(50)
AS
BEGIN
/*************************************************
SELECT * FROM dbo.sys_LoginHistory
usp_sys_Logout '8888888xxx8'
usp_sys_Logout '8888888888'
**************************************************/
IF EXISTS(SELECT TOP 1 * FROM dbo.Api_User WHERE Account=@UserID)
BEGIN
INSERT INTO dbo.sys_LoginHistory
( Account ,
LoginType ,
LoginTime ,
DeviceType ,
DeviceMID ,
ClientVersion
)
VALUES ( @UserID, -- Account - varchar(30)
'O' , -- LoginType - varchar(1)
GETDATE() , -- LoginTime - datetime
'' , -- DeviceType - varchar(10)
'' , -- DeviceMID - varchar(50)
'' -- ClientVersion - varchar(20)
)
SELECT '' AS MSG --返回空表示成功
END ELSE
SELECT '账号不存在!' AS MSG
END;
//来源:C/S框架网(www.csframework.com) QQ:23404761
参考文章:CodeHighlighter源代码格式化,代码缩进,关键词高亮着色(C#源码)
:


参考文档:
C# CodeHighlighter生成的高亮着色HTML源码格式化
原创:CodeHighlighter源代码格式化,代码缩进,关键词高亮着色(C#源码)
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
CSFramework.COM原创:全球国家名称列表国旗图标库导入程序(C#+VS2015)
原创:SQLJOB作业自动备份数据库并自动清除备份历史记录
C#微信支付完成前端回调通知notify_url完整版源码|CSframework.com原创文章
原创文章SQL生成每年的日期列表(年度日历表)显示周名
SQL2008多个查询条件分页查询脚本(原创)
提交数据时生成的SQL脚本便于实时跟踪
原创:C#源码 GridMovetor按回车自动跳到下一列或自动新增记录(www.csframework.com)
C/S架构快速开发框架SQL并发测试压力测试 | www.csframework.com
如何跟踪SQL命令生成器生成的代码
花生壳通过外网远程访问本地SQLServer服务器(原创)
[原创]C# Access 模糊查询SQL语句
【原创】WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
C# CodeHighlighter生成的高亮着色HTML源码格式化
原创:CodeHighlighter源代码格式化,代码缩进,关键词高亮着色(C#源码)
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
CSFramework.COM原创:全球国家名称列表国旗图标库导入程序(C#+VS2015)
原创:SQLJOB作业自动备份数据库并自动清除备份历史记录
C#微信支付完成前端回调通知notify_url完整版源码|CSframework.com原创文章
原创文章SQL生成每年的日期列表(年度日历表)显示周名
SQL2008多个查询条件分页查询脚本(原创)
提交数据时生成的SQL脚本便于实时跟踪
原创:C#源码 GridMovetor按回车自动跳到下一列或自动新增记录(www.csframework.com)
C/S架构快速开发框架SQL并发测试压力测试 | www.csframework.com
如何跟踪SQL命令生成器生成的代码
花生壳通过外网远程访问本地SQLServer服务器(原创)
[原创]C# Access 模糊查询SQL语句
【原创】WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
