ASP语法高亮类代码

此类高亮根据Editplus高亮来做的 

复制代码 代码如下:

Class Wyd_AspCodeHighLight  Private RegEx  Public Keyword,ObjectCommand,Strings,VBCode  Public KeyWordColor,ObjectCommandColor,StringsColor,Comment,CodeColor    Private Sub Class_Initialize()      Set RegEx = New RegExp  RegEx.IgnoreCase = True   ' 设置是否区分字母的大小写 True 不区分。      RegEx.Global = True   ' 设置全程性质。      KeyWordColor="#0000FF"      ObjectCommandColor="#FF0000"      StringsColor="#FF00FF"  Comment="#008000"  CodeColor="#993300"  Keyword="Set|Private|If|Then|Sub|End|Function|For|Next|Do|While|Wend|True|False|Nothing|Class" '关建字 请自己添加  ObjectCommand="Left|Mid|Right|Int|Cint|Clng|String|Join|Array" '函数 请自己添加  VBCode=""    End Sub    Private Sub Class_Terminate()      Set RegEx = Nothing    End Sub    Private Function M_Replace(Str,Pattern,Color)      RegEx.Pattern = Pattern  ' 设置模式。      M_Replace=RegEx.Replace(Str,"<font color="&Color&">$1</font>")    End Function     Private Function String_Replace(Str,Pattern,Pattern1,Color,IsString)    Dim Temp,RetStr  RegEx.Pattern =Pattern1      Set Matches = RegEx.Execute(Str)      For Each Match In Matches   ' 遍历 Matches 集合         Temp=Re(Match.value)         Str = Replace(Str,Match.value,Temp)      Next  RegEx.Pattern = Pattern  ' 设置模式。  If IsString=1 Then         String_Replace=RegEx.Replace(Str,"<font color="&Color&">"$1"</font>")  Else      String_Replace=RegEx.Replace(Str,"<font color="&Color&">$1</font>")  End If    End Function    Private Function Re(Str)     Dim TRegEx,Temp     Set TRegEx = New RegExp     TRegEx.IgnoreCase = True  ' 设置是否区分字母的大小写。     TRegEx.Global = True   ' 设置全程性质。     TRegEx.Pattern="<.*?>"     Temp=TRegEx.Replace(Str,"")     Temp=Replace(Temp,"<","")     Temp=Replace(Temp,">","")     Re=Temp     Set TRegEx=Nothing    End Function    Public Function MakeLi()      Dim Temp  If VBCode="" Then      MakeLi=""      Exit Function  End If      VBCode=HTMLEncode(VBCode)      Temp=M_Replace(VBCode,"\b("&Keyword&")\b",KeyWordColor)      Temp=M_Replace(Temp,"\b("&ObjEctCommand&")\b",ObjectCommandColor)      Temp=String_Replace(Temp,"""(.*?)""","""(.*)(<.+?>)("&KeyWord&ObjectCommand&")+(<.+?>)(.*)""",StringsColor,1)' 字符串      Temp=String_Replace(Temp,"(('|rem).*)","'(.*)(<.+?>)("&KeyWord&ObjectCommand&")+(<.+?>)(.*)",Comment,0) '注释      MakeLi="<FONT  COLOR="&CodeColor&">"&RepVbCrlf(Temp)&"</FONT>"    End Function    Public Function RepVbCrlf(fString)       RepVbCrlf = Replace(fString, CHR(10), "<BR> ")    End Function    Public Function HTMLEncode(fString)       If IsNull(fString) or fString="" Then       HTMLEncode=""    Exit Function       End If       fString = replace(fString, ">", ">")       fString = replace(fString, "<", "<")       'fString = Replace(fString, CHR(32), " ")       'fString = Replace(fString, CHR(9), " ")       'fString = Replace(fString, CHR(34), """)       'fString = Replace(fString, CHR(39), "'")       'fString = Replace(fString, CHR(13), "")       'fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")       'fString = Replace(fString, CHR(10), "<BR> ")       HTMLEncode = fString     End Function  End Class 

例子

复制代码 代码如下:

star=timer()  Set TT = New Wyd_AspCodeHighLight  If Request("xx")<>"" Then    TT.VBCode=Request("xx")    Response.write TT.MakeLi()    REsponse.write "<br>"&FormatNumber(timer()-star,2)*1000  Else  %>  <FORM METHOD=POST action="Index2.asp">  <TEXTAREA name="xx" ROWS="30" COLS="80">Class Lih  Private RegEx  Public Keyword,ObjectCommand,Strings,VBCode  Public KeyWordColor,ObjectCommandColor,StringsColor,Comment    Private Sub Class_Initialize()      Set RegEx = New RegExp      KeyWordColor="#0000FF"      ObjectCommandColor="#FF0000"      StringsColor="#FF00FF"  Comment="#008000"  Keyword="If|End|For|Next|Function|Then|Do|While|Wend|Class"  VBCode=""    End Sub    Private Sub Class_Terminate()      Set RegEx = Nothing    End Sub    Private Function M_Replace(Str,Pattern,Color)      RegEx.IgnoreCase = False   ' 设置是否区分字母的大小写。      RegEx.Global = True   ' 设置全程性质。      RegEx.Pattern = Pattern  ' 设置模式。</TEXTAREA>  <INPUT TYPE="submit" value=fff>  </FORM>  <%End If%>

相关推荐