我的博客托管在Blogger上,我经常用C / c# / Java / XML等语言发布代码片段,但我发现这些代码片段“支离破碎”。

是否有任何网站,我可以用来事先解析代码片段,整理格式,将XML“<”转换为“&lt;”等。

在这个领域有很多关于SO的问题,但我找不到任何直接解决这个问题的问题。

编辑:对于@Rich答案,网站声明“要在您的网站上显示格式化的代码,您需要获得此CSS样式表,并在页面的<head>部分中添加对它的引用”。这就是问题所在——你不能在博客AFAIK上这样做。


当前回答

这里有一个网站,它将格式化你的代码并输出html,它甚至包括用于语法着色的内联样式。也许不能满足你所有的需求,但这是一个好的开始。我相信他已经提供了来源,如果你想扩展它:

其他回答

使用SyntaxHighlighter可以很容易地做到这一点。我在我的博客上有一步一步地说明如何在Blogger中设置SyntaxHighlighter。SyntaxHighlighter非常容易使用。它可以让你以原始形式发布片段,然后将它们包装在pre块中,如:

<pre name="code" class="brush: erlang"><![CDATA[
-module(trim).

-export([string_strip_right/1, reverse_tl_reverse/1, bench/0]).

bench() -> [nbench(N) || N <- [1,1000,1000000]].

nbench(N) -> {N, bench(["a" || _ <- lists:seq(1,N)])}.

bench(String) ->
    {{string_strip_right,
    lists:sum([
        element(1, timer:tc(trim, string_strip_right, [String]))
        || _ <- lists:seq(1,1000)])},
    {reverse_tl_reverse,
    lists:sum([
        element(1, timer:tc(trim, reverse_tl_reverse, [String]))
        || _ <- lists:seq(1,1000)])}}.

string_strip_right(String) -> string:strip(String, right, $\n).

reverse_tl_reverse(String) ->
    lists:reverse(tl(lists:reverse(String))).
]]></pre>

只需将笔刷名称更改为“python”或“java”或“javascript”,并粘贴您选择的代码。CDATA标记让您可以在其中放入几乎任何代码,而不用担心实体转义或其他代码博客的典型烦恼。

我在f#中编写了自己的代码(参见这个问题),但它仍然不是完美的(我只是做正则表达式,所以我不识别类或方法名等)。

基本上,据我所知,如果你在撰写模式和HTML模式之间切换,博客编辑器有时会吃掉你的尖括号。所以你必须粘贴到HTML模式,然后直接保存。(我可能是错的,现在刚刚尝试,它似乎工作-依赖浏览器?)

当你有泛型时,这是可怕的!

对于我的博客,我使用http://hilite.me/来格式化源代码。它支持许多格式和输出相当干净的html。但如果你有很多代码片段,那么你就必须做很多复制粘贴。对于格式化Python代码,我也使用了pyptions(博客文章)。

共享代码最简单的方法是使用公共主旨。只需编写一个并粘贴到嵌入代码。容易peasy。

http://gist.github.com

为了解决搜索引擎的问题,可以在页面上使用隐藏的div,简单如下:

<div style="display:none"> content </div>

我在我的博客上使用SyntaxHighlighter。实际的网站托管在我自己的服务器上,而不是博主的服务器上(博主可以选择将帖子发送到你自己的网站上),但拥有自己的域名和网络托管每个月只需要几美元。