首页
社区
课程
招聘
[分享]在帖子里给代码加上语法高亮
发表于: 2010-10-14 12:16 9263

[分享]在帖子里给代码加上语法高亮

2010-10-14 12:16
9263
发帖时总免不了要发一些代码,但是论坛不提供语法高亮功能,因此要借助第三方的语法高亮功能才能满足要求。
这里推荐一款轻量级的编辑工具 -- Notepad2 ,但是不是它的官方版本,而是修改版本。同样是开源项目:http://sourceforge.net/projects/notepad2/
开源就是好呀,可以随意增加自己需要的功能。
下面介绍下怎么使用它来给帖子里的代码加上高亮。
1。先把代码复制到 Notepad2 中,在“工具”-> “选择语法高亮方案”里选择相应的语言的语法高亮方案,这里我选择的是C++,如果是 Delphi 可以选择 Pascal,还有 Python等其它方案。
2。选择好之后在界面上就能看到代码被着色了。这时全选所有文本,再“编辑”->“复制为UBB代码”,这时虽然界面上看不到变化,但是需要的内容已经在剪贴板里了,新发一个帖子,把剪贴板里的内容粘贴出来,再预览看看。是不是和编辑器里看到的一样?



以下内容是用来试验的 C++ 代码,效果如下:
附件中提供修改版的 Notepad2

/*
* A simple code to filter the C/C++ source code.
* Copyright (c) 2007 freebsd13 <freebsd13@163.com>
*/
#include <iostream>

using namespace std;

int main()
{
    
char ch,ch10;
    
while(cin.get(ch))
    {
        
if(ch == '/')
        {
            
cin.get(ch);
            
switch(ch)
            {
            
case '/':
                
do{
                    
cin.get(ch);
                }
while(ch!='\n');
                
cout<<ch;
                
break;
            
case '*':
                
do{
                    
cin.get(ch);
                    
cin.get(ch1);
                    
cin.putback(ch1);
                }
while(!(ch == '*'&&ch1 == '/'));
                
cin.get(ch);//吃掉放回去的字符

                
break;
            
default:
                
cout<<'/';
                
cout<<ch;
            }
        }
else
            
cout<<ch;
    }
    
return 0;
}

。。。。。。。。。。。。。。。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (43)
雪    币: 92
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
试验一下,看看行不行:

#include<iostream>
using namespace
std;
int main()
{
cout<<"ddd"<<endl;
return 0;
}
2010-10-14 13:12
0
雪    币: 433
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
3
推荐另一个工具: xTiNt ,之前一直用它来高亮代码。
2010-10-27 13:17
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
4
xTiNt 感觉老了。
2010-10-28 22:04
0
雪    币: 223
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

xTiNt 感觉老了。


实验了下,貌似还可以对
2010-12-27 11:41
0
雪    币: 431
活跃值: (259)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
6

//OK


嘿嘿,真的不错诶
2010-12-27 14:49
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢楼主发布分享
2011-1-1 09:01
0
雪    币: 288
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好东西,今年回的第一帖!
2011-1-1 09:11
0
雪    币: 257
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
请问这个也能把主题高亮吗?
2011-1-9 09:34
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢楼猪分享~~
2011-1-9 10:01
0
雪    币: 132
活跃值: (122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错 没有想过这个问题 这几天我也用notepad2
2011-1-9 10:06
0
雪    币: 149
活跃值: (101)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
12
谢谢楼主,真是个好工具!!
2011-1-12 07:00
0
雪    币: 393
活跃值: (150)
能力值: (RANK:110 )
在线值:
发帖
回帖
粉丝
13
我过来实验一下

#include<stdio.h>
main()
{
int a=100;
float b=123.255;
printf("a=%d ",a);
printf("a=%10d ",a);
printf("a=%-10d ",a);

printf("a=%+d ",a);

printf("a=% d ",a);

printf("a=%#o ",a);
printf("a=%#x ",a);

printf("b=%#f ",b);

}
2011-1-20 08:47
0
雪    币: 437
活跃值: (110)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
14
好东西
2011-2-14 13:17
0
雪    币: 4022
活跃值: (92)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
 

procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage('TestUBB');
end;


测试一下delphi语法。。。
2011-2-15 12:49
0
雪    币: 4022
活跃值: (92)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16

procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage('TestUBB');
end;


测试一下delphi语法。。。
2011-2-15 12:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主真是牛人啊,多谢了
2011-2-18 23:03
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
测试一下。。。。。


#include<iostream.h>
using namespace
std;
int main()
{
cout<<"ddd"<<endl;
return 0;
}
2011-2-19 15:09
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
111111111111


public class TestUnboxing {
public static void main(String[] args){
Integer i=10;
int ig=i.intValue();
switch (i.compareTo(ig)){
case 1:
System.out.println(“i>ig”);
break;
case 0:
System.out.println(“i=ig”);
break;
case (-1):
System.out.println(“i break;
}
}

}
2011-2-24 01:16
0
雪    币: 507
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
试试

.

setlocal ENABLEDELAYEDEXPANSION
fbinst (ud) filesize "PETOOLS/*"
set /a size=%errorlevel%*105/100
for %%i in (Z W V U T R Q P) do if not exist %%i:\nul (
set
udtooldrv=%%i:
)
mdisk -a -s %size%K -m tooldrv% -p "/FS:FAT /Y /Q"
fbinst (ud) output "PETOOLS/*" tooldrv%/


program ansi2utf8;

{$R *.res}

var fi,fo:textfile; //
s:string;
begin
if
ParamCount<>2 then
begin
{$APPTYPE CONSOLE}
writeln('用法:参数(绝对路径)');
writeln('<输入ansi格式文件> <输出utf8格式文件>');
readln;
{$APPTYPE CONSOLE}
exit;
end;
2011-3-9 23:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
对这个不是很在行了。
2011-3-18 00:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
相信这样能学到不少了。
2011-3-18 00:35
0
雪    币: 223
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
测试一下notepad++:

int main()
{
char str;
int i = 0;
double j;
printf("hello world!");

return 0;
}


测试一下slickedit:

int main()
{
char str;
int i = 0;
double j;
printf("hello world!");

return 0;
}

测试notepad2修改版:

int main()
{
char str;
int i = 0;
double j;
printf("hello world!");

return 0;
}


ps:上次用SlickEdit,复制代码贴到Qzone上,自动把颜色和底色都复制上去。但它和notepad2修改版的原理不一样,notepad2的是自动添加了相关的颜色等便签。slickedit复制的内容没有看到这些,不清楚其原理
2011-6-6 03:31
0
雪    币: 342
活跃值: (199)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
24
jyyyyyyyyyyyyyyyyyyyyyyyy
2011-9-30 12:04
0
雪    币: 342
活跃值: (199)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
25
//
// Exception handling procedure prototypes.
//

NTSYSAPI
DECLSPEC_NORETURN
VOID
NTAPI
RtlRaiseStatus (
    IN NTSTATUS Status
    );
2011-9-30 12:06
0
游客
登录 | 注册 方可回帖
返回
//