C# CodeHighlighter生成的高亮着色HTML源码格式化
作者:C/S框架网|www.cscode.ne  发布日期:2020/03/02 19:25:30
  C# CodeHighlighter生成的高亮着色HTML源码格式化

C# CodeHighlighter生成的高亮着色HTML源码格式化

调用CodeHighlighterEngine.GenerateHtmlInline方法生成的高亮代码没有排版(没有代码格式化),因此自己实现C#代码排版功能,效果一般吧,总比没有排版好多了。

C# Code:


/// <summary>
/// HTML代码排版格式化
/// </summary>
/// <param name="srcHTML"></param>
/// <returns></returns>
private static string IndentCodeHTML(string srcHTML)
{
  System.Text.StringBuilder retCode
= new System.Text.StringBuilder();
  
int indent = 0;
  
string[] lines = srcHTML.Split('\n');
  
string NoHtml;
  
foreach (string line in lines)
  {
    NoHtml
= WebUtility.HtmlDecode(RemoveHTML(line.Trim()));//转成原始内容
    
    
//判断结束缩进代码
    
if (IsIdentyTagEnd(NoHtml))
    {
      indent
--;
      
if (indent < 0) indent = 0;
    }
    
    
string formatedLine = line.Trim();
    
for (int i = 0; i < indent; i++)
    {
      formatedLine
= "    " + formatedLine;
      
//formatedLine = "  " + formatedLine;//指表符
      
}
      
      retCode.Append(formatedLine +
"\n");
      
      
//判断开始缩进代码
      
if (IsIdentyTag(NoHtml, "head")
      
|| IsIdentyTag(NoHtml, "body")
      
|| IsIdentyTag(NoHtml, "div")
      
|| IsIdentyTag(NoHtml, "table")
      
|| IsIdentyTag(NoHtml, "tr")
      
|| IsIdentyTag(NoHtml, "td")
      
|| IsIdentyTag(NoHtml, "center")
      )
      {
        indent++;
      }
    }
    
return retCode.ToString();
  }
  
  
/// <summary>
  
/// 判断代码缩进的标记,比如:head,body,div,table,tr,td代码行,下一行要缩进
  
/// </summary>
  
/// <param name="line">当前代码行</param>
  
/// <param name="tag">比如:head,body,div,table,tr,td</param>
  
/// <returns></returns>
  
private static bool IsIdentyTag(string line, string tag)
  {
    
return line.Trim().StartsWith("<" + tag) && line.EndsWith(">")
    
|| line.Trim().StartsWith("<" + tag + ">");
  }
  
  
/// <summary>
  
/// 判断结束标记
  
/// </summary>
  
/// <param name="line">当前代码行</param>
  
/// <returns></returns>
  
private static bool IsIdentyTagEnd(string line)
  {
    
return false
    
|| line.EndsWith("</head>")
    
|| line.EndsWith("</body>")
    
|| line.EndsWith("</center>")
    
|| line.Trim() == "</div>"
    
|| line.EndsWith("</div>")
    
|| line.Trim() == "</tr>"
    
|| line.Trim() == "</td>"
    
|| line.Trim() == "</table>";
  }
  
  
  
//来源:C/S框架网(www.csframework.com) QQ:23404761



C#使用正则表达式移除所有的Html标记,返回纯文本


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



HTML代码格式化效果:


HTML Code:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title>关于我们-C/S框架网</title>
    
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    
<meta content='孙中吕(Jonny Sun)' name='author' />
    
<meta content='珠海市喜鹊信息技术有限公司' name='copyright' />
    
<meta content='C/S框架网是珠海市喜鹊信息技术有限公司旗下品牌网站,专业的IT技术服务网站,致力于研发基于C#.NET C/S架构的智能快速开发框架平台,力争成为行业软件领军者,专注于快速开发平台,软件开发平台,软件开发框架,提供行业管理软件如ERP/MES/MRP/HIS/CRM/MIS/POS系统解决方案。' name='description' />
    
<meta content='C/S开发框架,C/S开发平台,C#开发框架,C#开发平台,Winform开发框架,Winform开发平台,C#.Net开发框架,C#.Net开发平台,CS开发平台,CS开发框架,C#开源框架' name='keywords' />
    
<meta content='MSHTML 6.00.6000.16788' name='GENERATOR' />
    
<meta name='MSSmartTagsPreventParsing' content='TRUE' />
    
<meta http-equiv='MSThemeCompatible' content='Yes' />
    
<link rel="shortcut icon" href="images/logo.ico" type="image/x-icon" />
    
<link rel="icon" href="images/logo.ico" type="image/x-icon" />
    
<link href="css/css.css" rel="stylesheet" type="text/css" />
    
<link href="css/css-menu.css" rel="stylesheet" type="text/css" />
    
<script type="text/javascript" src="js/common.js"></script>
    
<link href="css/zzsc.css" rel="stylesheet" />
    
<script src="js/jquery-3.3.1.js"></script>
    
<script src="js/im_chat.js"></script>
</head>
<body>
    
<div id="rightArrow"><a href="javascript:;" title="在线客户"></a></div>
    
<div id="floatDivBoxs">
    
<div class="floatDtt">在线客服</div>
        
<div class="floatShadow">
            
<ul class="floatDqq">
            
<li style="padding-left: 0px;">
            
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=23404761&site=qq&menu=yes">
            
<img src="/images/qq.png" align="absmiddle" />  在线客服
            
</a>
            
</li>
            
</ul>
        
<div class="floatDtxt">热线电话</div>
            
<div class="floatDtel">
                
<img src="/images/online_phone.png" width="155" height="45" alt="" />
            
</div>
            
<hr />
            
<div style="text-align: center; padding: 2px 0 5px 0; background: #EBEBEB;">
                
<img src="/images/XiQue.png" /><br />
                微信二维码
            
</div>
        
</div>
    
</div>
    
    
<center>
        
<div class="page_header">
            
<script type="text/javascript" src="js/title.js"></script>
        
</div>
        
<div class="page_container">
            
<div class="share">
                
<script type="text/javascript" src="http://www.csframework.com/js/our-slogan.js"></script>
            
</div>
            
<div class="ptop">
                 
            
</div>
            
<div class="p_header_bk">
                
<div id="navframe">
                    
<script type="text/javascript" src="js/menu.js"></script>
                
</div>
                
<div class="location">
                    
<div>
                        
<img alt="" src="images/nav_icon.gif" />
                        
<a href="default.htm" class="LinkBlue">C/S框架网</a> | <span class="mytitle">关于我们</span>
                    
</div>
                
</div>
            
</div>
            
<div class="content_back" style="height: auto;">
                
<div style="padding: 3px; margin-left: 100px; height: auto; width: 800px; padding-right: 50px;">
                    
<div>
                        
<a target="_blank" href="default.htm">
                        
<img alt="C/S框架网|Logo" src="images\csframework-logo-baidu.jpg" /></a>   
                        
<br />
                        
<img alt="" src="images\newitem.gif" />
                        
<a target="_blank" href="about-company.htm">珠海市喜鹊信息技术有限公司简介</a>
                    
</div>
                    
<br />
                    
<hr />
                    
<br />
                    
<div>
                        
<img alt="" src="images\item1.gif" />
                        
                        
<a target="_blank" href="http://www.csframework.com">C/S框架网</a>是珠海市喜鹊信息技术有限公司旗下品牌网站、专业的IT技术服务网站,主要面向IT专业技术人员、软件企业以及事业单位提供专业的IT技术咨询服务以及企业信息一体化解决方案。<br />
                         
<div class="bkline">
                    
</div>
                    
<img alt="" src="images\item1.gif" />
                    本站主要介绍基于Winform平台的
<a target="_blank" href="http://www.csframework.com/cs.htm">C/S(Client/Server)系统</a>的设计与研发,全面剖析<a target="_blank" href="http://www.csframework.com/cs-three-tire-architecture.htm">C/S系统开发框架</a>的核心组成部分,结合UML流程图、系统架构图、开发文档以及演示源代码给大家深入剖析和使用详解。借助C/S架构的<a target="_blank" href="http://www.csframework.com/cs-framework-5.0.htm">.NET快速开发平台</a>强大的技术支撑,提高用户软件系统架构的稳定性,提高软件项目开发效率、缩短项目周期,节约开发成本。<br />
                     
<div class="bkline">
                
</div>
                
                
<img alt="" src="images\item1.gif" />
                
<a target="_blank" href="http://www.csframework.com/cs-framework-5.0.htm">C/S系统开发框架</a>基于.NET环境快速开发系统提供了强大的技术支持,编程人员不需要开发系统的基础功能和公共模块,开发框架本身提供了强大的工具实用类库以及开发包,程序员只须集中精力专注业务逻辑部分开发,因此极大提高开发效率、节约开发成本。<br />
                 
<div class="bkline">
            
</div>
            
            
<img alt="" src="images\item1.gif" />
            开发框架框架提供数个单表、主从表、多级主从表、对话框、查询界面以及报表功能模板窗体作为参考,结合C/S系统开发框架配套的
<a target="_blank" href="http://www.csframework.com/cs-code-generator.htm">代码生成器工具</a>,能快速完成项目三分之二功能。关于代码自动生成器工具,您只需要按照向导操作步骤,快速完成一个复杂业务窗体功能的ORM模型、UI、BLL和DAL<a target="_blank" href="http://www.csframework.com/cs-three-tire-architecture.htm">三层架构</a>源代码以及SQL脚本,快速完成界面和报表开发。<br />
             
<div class="bkline">
        
</div>
        
        
<img alt="" src="images\item1.gif" />
        我们积极收集和采纳用户提供宝贵的意见,并数次改良优化,迭代升级产品,致力于打造技术成熟、性能稳定的基于
<a target="_blank" href="http://www.csframework.com/product-list.htm">C/S架构的快速开发平台</a>。借助C/S框架网广大用户资源,在学习的同时创造价值,在成功的时候分享喜悦!<br />
         
<div class="bkline">
    
</div>
    
    
<img alt="" src="images\item1.gif" />
    我们致力于将C/S框架网打造成一流的学习平台提供丰富的学习资料,分享C/S系统开发经验和编程心得,使开发者少走弯路快速提升编程技能,目标驱动、聚焦学习,成就个人价值。
<br />
     
<div class="bkline">
</div>

<img alt="" src="images\item1.gif" />

我们秉着分享成功经验,坚持创新原则,提供优质的售后服务与技术保障,为您的软件项目保驾护航,欢迎选购
<a target="_blank" href="http://www.csframework.com/product-list.htm">我们的产品</a>。C/S框架网在您的支持下会建设得更美好!<br />
 
<div class="bkline">
</div>

<img alt="" src="images\item1.gif" />

C/S框架网主要产品有:
<br />
<br />
   
<a target="_blank" href="http://www.csframework.com/cs-framework-5.0.htm">.NET快速开发平台</a> | <a target="_blank" href="http://www.csframework.com/cs-framework-5.0.htm">.NET快速开发框架</a><br />
<br />
   
<a target="_blank" href="http://www.csframework.com/cs-code-generator.htm">C/S系统代码生成器软件</a><br />
<br />
   
<a target="_blank" href="http://www.csframework.com/cs-framework-webapi-1.0.htm">WebAPI开发框架</a><br />
<br />
   
<a target="_blank" href="http://www.csframework.com/cs-authorization-v2.0.htm">软件授权注册系统</a><br />
<br />

作为C/S框架网核心产品,基于C/S架构的.NET快速开发平台已经积累了数百家软件企业以及2000多位软件使用者,成功研发多个行业的系统,如制造、服务、零售、商贸等行业的ERP、MRP、MES、CRM、MIS、HIS、HRP、POS数据管理应用系统。


<br />

<br />
<img alt="C/S框架网|原创精神.创造价值.打造精品" src="images/our03.gif" />
<div class="bkline">
</div>
</div>
<br />
<hr />
<br />
<table>
    
<tr>
        
<td style="padding: 5px;">
            
<img alt="C/S框架网-Logo" src="images/cs_logo_2015.png" />
        
</td>
        
<td>
            
<div style="padding-left: 5px; width: 620px;">
                
<b>作者介绍:</b>
                
<br />
                
<br />
                
<span>作者从事IT行业软件开发领域15年,擅长软件产品研发与快速开发平台技术研究,思维慎密、雷厉风行,具有过人的学习能力,熟悉及使用C、C++、VB、Pascal、C#、Java、HTML等编程语言,参与系统分析、编程设计数十套中大型系统,包括Winform系统、Web系统、APP移动应用等项目,积累丰富的实战经验与项目管理经验。对系统分析、软件架构、设计模式、业务建模、数据挖掘、编程设计、报表应用等技术方面有多年研究及项目应用经验。</span>
                
<br />
                
<br />
                
<img alt="" src="images\item1.gif" /><a target="_blank" href="http://www.csframework.com/author.htm">点击查看作者详情</a>
            
</div>
        
</td>
    
</tr>
</table>
</div>
<br />
<br />
<div class="public_img">
</div>
</div>
<div class="page_footer_outer">
<div style="padding-top: 5px;">站内链接:<a href="default.htm">首页</a> | <a href="sitemap.htm">网站导航</a> | <a href="about.htm" target="_parent">关于我们</a> | <a href="contact.htm" target="_parent">联系我们</a> | <a href="feedback.htm" target="_parent">网站留言</a> | <a href="copyright.htm" target="_parent">版权声明</a> | <a href="quotation.htm" target="_parent">产品报价</a> | <a href="http://www.beian.miit.gov.cn" target="_parent">粤ICP备14010882号-3</a></div>
<div>Copyright © 2010-2019 www.csframework.com, All Rights Reserved.</div>
    
<div>
        
<img alt="敬告" title="敬告" src="http://www.csframework.com/images/alarm.gif" /> 
        
<span class="main-warning">敬告:本站销售的C/S框架是原创作品,购买后禁止转售、转租及向任何第三方泄露源码!</span>
    
</div>
<div class="main-warning-1">本网站内容允许非商业用途的转载,但须保持内容的原始性并以链接的方式注明出处,本网站保留内容的一切权利。</div>
</div>
<div class="pbtm">
</div>
<div class="bk_foot_bk">
</div>
</div>
</center>
</body>
</html>


//来源:C/S框架网(www.csframework.com) QQ:23404761


网上下载CodeHighlighter组件,然后在自己的项目中添加引用下面的dll文件。

贴图图片-CodeHighlighter源代码格式化关键词高亮着色



参考文章:CodeHighlighter源代码格式化,代码缩进,关键词高亮着色(C#源码)




扫一扫加微信:
 
上一篇 下一篇