Visual Basic代码无法正确显示来自Google的
prettify.js.
堆栈溢出:
Partial Public Class WebForm1 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load 'set page title Page.Title = "Something" End Sub End Class
在Visual Studio中
How do I specify which language my
code is in?You don’t need to specify the language
since prettyprint() will guess. You
can specify a language by specifying
the language extension along with the
prettyprint class like so:06001
我看不到lang-vb或lang-basic选项.有人知道是否作为加载项存在?
注意:这与VB.NET code blocks Stack Overflow的建议有关.
解决方法
/编辑:我改写了整篇文章.
以下是VB突出显示问题的完整解决方案.如果SO没有什么好处,请使用它. VB语法高亮绝对是想要的.
我还添加了一些代码示例,其中包含一些正确突出显示的复杂代码字面值.不过,我甚至没有试图让XLinq正确.但仍然可以工作. keywords list来自MSDN.不包括内容关键字.你知道GetXmlNamespace操作符吗?
该算法知道文字类型字符.它也应该能够处理标识符类型字符,但我还没有测试这些.请注意,该代码适用于HTML.因此,&和>被要求作为命名(!)实体读取,而不是单个字符.
对于长的正则表达式很抱歉
var highlightVB = function(code) { var regex = /("(?:""|[^"])+"c?)|('.*$)|#.+?#|(&[HO])?\d+(\.\d*)?(e[+-]?\d+)?U?([SILDFR%@!#]|&)?|\.\d+[FR!#]?|\s+|\w+|&|<|>|([-+*/\\^$@!#%&<>()\[\]{}.,:=]+)/gi; var lines = code.split("\n"); for (var i = 0; i < lines.length; i++) { var line = lines[i]; var tokens; var result = ""; while (tokens = regex.exec(line)) { var tok = getToken(tokens); switch (tok.charAt(0)) { case '"': if (tok.charAt(tok.length - 1) == "c") result += span("char",tok); else result += span("string",tok); break; case "'": result += span("comment",tok); break; case '#': result += span("date",tok); break; default: var c1 = tok.charAt(0); if (isDigit(c1) || tok.length > 1 && c1 == '.' && isDigit(tok.charAt(1)) || tok.length > 5 && (tok.indexOf("&") == 0 && tok.charAt(5) == 'H' || tok.charAt(5) == 'O') ) result += span("number",tok); else if (isKeyword(tok)) result += span("keyword",tok); else result += tok; break; } } lines[i] = result; } return lines.join("\n"); } var keywords = [ "addhandler","addressof","alias","and","andalso","as","boolean","byref","byte","byval","call","case","catch","cbool","cbyte","cchar","cdate","cdec","cdbl","char","cint","class","clng","cobj","const","continue","csbyte","cshort","csng","cstr","ctype","cuint","culng","cushort","date","decimal","declare","default","delegate","dim","directcast","do","double","each","else","elseif","end","endif","enum","erase","error","event","exit","false","finally","for","friend","function","get","gettype","getxmlnamespace","global","gosub","goto","handles","if","implements","imports","in","inherits","integer","interface","is","isnot","let","lib","like","long","loop","me","mod","module","mustinherit","mustoverride","mybase","myclass","namespace","narrowing","new","next","not","nothing","notinheritable","notoverridable","object","of","on","operator","option","optional","or","orelse","overloads","overridable","overrides","paramarray","partial","private","property","protected","public","raiseevent","readonly","redim","rem","removehandler","resume","return","sbyte","select","set","shadows","shared","short","single","static","step","stop","string","structure","sub","synclock","then","throw","to","true","try","trycast","typeof","variant","wend","uinteger","ulong","ushort","using","when","while","widening","with","withevents","writeonly","xor","#const","#else","#elseif","#end","#if" ] var isKeyword = function(token) { return keywords.indexOf(token.toLowerCase()) != -1; } var isDigit = function(c) { return c >= '0' && c <= '9'; } var getToken = function(tokens) { for (var i = 0; i < tokens.length; i++) if (tokens[i] != undefined) return tokens[i]; return null; } var span = function(class,text) { return "<span class=\"" + class + "\">" + text + "</span>"; }
测试代码:
Protected Sub Page_Load(ByVal sender As Object,ByVal e As EventArgs) Handles Me.Load 'set page title Page.Title = "Something" Dim r As String = "Say ""Hello""" Dim i As Integer = 1234 Dim d As Double = 1.23 Dim s As Single = .123F Dim l As Long = 123L Dim ul As ULong = 123UL Dim c As Char = "x"c Dim h As Integer = &H0 Dim t As Date = #5/31/1993 1:15:30 PM# Dim f As Single = 1.32e-5F End Sub