比较长,不过支持全部的关键字,直接就可以用了。
using System; using System.Text; using System.Text.RegularExpressions; namespace Com.OSLeague.Component { /// <summary> /// 语法分析器,将所有Code根据语法进行变色 /// <list type="VB">支持VB.NET</list> /// <list type="CS">支持CS</list> /// <author>掉掉</author> /// <date>2002年5月14日</date> /// <Memo> /// 练习正则表达式 /// </Memo> /// </summary> public class CodeAnalysis { // //定义HTML开始和结束的语句,用于语法变色 // const string TAG_FNTRED = @"<font color=""red"">"; const string TAG_FNTBLUE = @"<font color=""blue"">" ; const string TAG_FNTGRN = @"<font color=""green"">" ; const string TAG_FNTMRN = @"<font color=""maroon"">" ; const string TAG_FNTBLACK = @"<font color=""black"">" ; const string TAG_EFONT = @"</font>" ; const string TAG_SPNYELLOW = @"<span style=""background-color: yellow;"">"; const string TAG_ESPAN = @"</span>"; const string TAG_B = @"<b>"; const string TAG_EB = @"</b>"; const string TAG_COMMENT = @"<font colr=#008200>"; const string TAG_ECOMMENT = @"</font>"; // public CodeAnalysis() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 处理VB.NET代码,彩色化.. /// </summary> /// <param name="Code">传入的Code</param> /// <returns>处理过后的代码</returns> public string ParseVB(string Code) { // //定义VB.NET中关键字,将其存为数组 // string[] VB_Keyword = new string[] ; // //设定转换代码颜色 // string ReplaceVBComment = TAG_COMMENT + "" + TAG_ECOMMENT; string ReplaceVBKeyword = TAG_FNTBLUE + "$" + TAG_EFONT; //开始转换 for (int i=0;i<VB_Keyword.Length;i++) { string TempDirectives = @"(?<char>(s" + VB_Keyword[i] + "|" + VB_Keyword[i] + @"s))"; Code = Regex.Replace(Code,TempDirectives,ReplaceVBKeyword,RegexOptions.IgnoreCase); Code = Regex.Replace(Code,@"'(?<x>[^rn]*)",ReplaceVBComment); Code = Regex.Replace(Code,@"REM (?<x>[^rn]*)",ReplaceVBComment); } return Code; } } } |