给代码添加颜色---让你的程序在blog上多姿多彩

我写blog的时候,有时候需要把一些代码给贴上去,平时用IDE或者别的编辑器(如Editplus)写代码的时候,因为这些编辑环境有语法分析,所以程序的关键字和类等等的东西都能表示出不一样的颜色,但是当把这些代码贴到blog里面之后,颜色都没有了,只剩下黑色字体的干巴巴的代码:(

     在前一个删除注释程序的基础上,作了一些修改,就成了现在这个可以给你的代码添加颜色的程序。注释就不写了,和上一个差不多,就是多了一些正则表达式的使用,用了一下也还行,那就这样吧。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Delete comment </TITLE>
<META NAME="Author" CONTENT="zc-peng">
</HEAD>

<BODY>
<textarea style="height:300;width:500" name="t1" onpropertychange=""></textarea>
<textarea style="height:300;width:500" name="t3"></textarea>
<input type="button" value="test" οnclick="addColor()">
<DIV id="divedit" style="BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; SCROLLBAR-FACE-COLOR: #dda0dd; SCROLLBAR-HIGHLIGHT-COLOR: #c3d6da; OVERFLOW: scroll; BORDER-LEFT: black 2px solid; WIDTH: 100%; SCROLLBAR-SHADOW-COLOR: #3d5054; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #3d5054; SCROLLBAR-ARROW-COLOR: #e6e6fa; BORDER-BOTTOM: black 2px solid; SCROLLBAR-DARKSHADOW-COLOR: #85989c; HEIGHT: 380px; BACKGROUND-COLOR: #e6e6fa" align=left CONTENTEDITABLE="false"></div>
</BODY>

<script>

function addColor(){

    
var t1_Content = document.all.t1.value;

    t1_Content = t1_Content.replace(/&amp/g,
"&ampamp");
    
    
for(var i=0;i<entity.length;i++){
        
var tem1 = entity[i].substr(0,1);
        
var tem2 = entity[i].substr(1);
        
var reg = new RegExp("&(" + tem2 + ")","g");
        
//#0000ff is keyword color
        t1_Content = t1_Content.replace(reg,"&amp$1");
    }

    t1_Content = t1_Content.replace(/</g,
"&lt;");
    t1_Content = t1_Content.replace(/>/g,
"&gt;");
    t1_Content =
"<br>" + t1_Content;
    
for(var i=0;i<keyword.length;i++){
        
var reg = new RegExp("([^a-zA-Z0-9_]+)(" + keyword[i] + ")([^a-zA-Z0-9_]+)","g");
        
//#0000ff is keyword color
        t1_Content = t1_Content.replace(reg,"$1<font color='#0000ff'>$2</font>$3");
        
    }
    
for(var i=0;i<htmlkeyword.length;i++){
        
var reg = new RegExp("([^a-zA-Z0-9_]+)(" + htmlkeyword[i] + ")([^a-zA-Z0-9_]+)","g");
        
//#0000ff is keyword color
        t1_Content = t1_Content.replace(reg,"$1<font color='#ff0000'>$2</font>$3");
    }

    
var result = "";
    
var flag = false;
    
var b = t1_Content.split("/r/n");//split row

    //for per row
    for(var i = 0;i<b.length;i++){
        
var perRow = b[i];
        
if(flag == true){
            
if(perRow.indexOf("*/") != -1){
                
//delete comment
                //perRow = perRow.substr(perRow.indexOf("*/") + 2);
                //perRow = "<font color='#008040'>" + perRow.substr(0,perRow.indexOf("*/") + 2) + "</font>" + perRow.substr(perRow.indexOf("*/") + 2);
                perRow = addFontTag(perRow.substr(0,perRow.indexOf("*/") + 2),COMMENT_COLOR) + perRow.substr(perRow.indexOf("*/") + 2);
                flag =
false;
            }
else{
                
//perRow = "<font color='#008040'>" + perRow + "</font>";
                perRow = addFontTag(perRow,COMMENT_COLOR);
                result += perRow +
"/r/n";
                
continue;
            }
        }

        
if(perRow.indexOf("/"") == -1 && perRow.indexOf("/") == -1){
            
//neither " nor / exsit in perRow
            //do nothing
        }else{

            
//for per character
            for(var j = 0;j<perRow.length;j++){
                
var tempChar = perRow.substr(j,1);//per char
                if(tempChar == "/""){
                    
var tempCol = j+1;
                    
if(tempCol == perRow.length){
                        
break;//next row
                    }else{
                        
for(var k = tempCol;k<perRow.length;k++){
                            
var nextChar = perRow.substr(k,1);
                            
if(nextChar == "/""){
                                
if(perRow.substr(k-1,1) == "//"){
                                    
if(perRow.substr(k-2,1) == "//"){
                                        
//match "...//"
                                        perRow = perRow.substr(0,j) + addFontTag(perRow.substr(j,k-j+1),STRING_COLOR)+ perRow.substr(k + 1);
                                        j = k + 22 + 7;
//22:<font color='#990099'>.length ; 7:</font>.length
                                        break;//next col
                                    }else{
                                        
continue;
                                    }
                                }
else{
                                    
//match "..."
                                    //perRow = perRow.substr(0,j) + "<font color='#990099'>" + perRow.substr(j,k-j+1) + "</font>" + perRow.substr(k + 1);
                                    perRow = perRow.substr(0,j) + addFontTag(perRow.substr(j,k-j+1),STRING_COLOR)+ perRow.substr(k + 1);
                                    j = k + 22 + 7;
//22:<font color='#990099'>.length ; 7:</font>.length
                                    break;//next col
                                }
                            }
                        }
                    }
                }
else if(tempChar == "/"){
                    
var tempCol = j+1;
                    
if(tempCol == perRow.length){
                        
break;//next row
                    }else{
                        
if(perRow.substr(tempCol,1) == "/"){
                            
//delete comment
                            //perRow = perRow.substr(0,j);
                            //perRow = perRow.substr(0,j) + "<font color='#008040'>" + perRow.substr(j) + "</font>";
                            if(j != 0){
                                
if(perRow.substr(j - 1,1) == "//"){
                                    
//regExp
                                    //like : ///*asdf*///
                                    continue;
                                }
                            }
                            perRow = perRow.substr(0,j) + addFontTag(perRow.substr(j),COMMENT_COLOR);
                            
break;//next row
                        }else if(perRow.substr(tempCol,1) == "*"){
                            
if(j != 0){
                                
if(perRow.substr(j - 1,1) == "//"){
                                    
//regExp
                                    //like : ///*asdf*///
                                    continue;
                                }
                            }
                            flag =
true;
                            
var temp = perRow.substr(j + 2);
                            
if(temp.indexOf("*/") != -1){
                                
//delete comment
                                //perRow = perRow.substr(0,j) + temp.substr(temp.indexOf("*/") + 2);
                                //perRow = perRow.substr(0,j) + "<font color='#008040'>" + temp.substr(0,temp.indexOf("*/")) + "</font>" + temp.substr(temp.indexOf("*/") + 2);
                                //alert(temp);
                                perRow = perRow.substr(0,j) + addFontTag("/*" + temp.substr(0,temp.indexOf("*/") + 2),COMMENT_COLOR) + temp.substr(temp.indexOf("*/") + 2);
                                flag =
false;
                                j--;
//important
                                j = j + 22 + 7;//22:<font color='#990099'>.length ; 7:</font>.length
                            }else{
                                
//delete comment
                                //perRow = perRow.substr(0,j);
                                //perRow = perRow.substr(0,j) + "<font color='#008040'>" + perRow.substr(j) + "</font>"
                                perRow = perRow.substr(0,j) + addFontTag(perRow.substr(j),COMMENT_COLOR);
                                
break;//next row
                            }
                        }
else{
                            
continue;
                        }
                    }
                }
            }

        }

        
        result += perRow +
"/r/n";
    }

    result = result.replace(//t/g,
"&nbsp;&nbsp;&nbsp;&nbsp;");
    
document.all.divedit.innerHTML = "<pre>" + result + "</pre>";
    
document.all.t3.value = result;

}

/** constant **/
var COMMENT_COLOR = "'#008040'";
var STRING_COLOR = "'#990099'";
var KEYWORD_COLOR = "'#0000ff'"
/***/

function addFontTag(str,type){
    
var reg = /<font.*>(.*)<//font>/g;
    str = str.replace(reg,
"$1");
    
//alert(str);
    return "<font color=" + type + ">" + str + "</font>";
}

var keyword = new Array(
"abstract",
"boolean",
"break",
"byte",
"case",
"catch",
"char",
"class",
"const",
"continue",
"default",
"delete",
"do",
"double",
"else",
"extends",
"false",
"final",
"finally",
"float",
"for",
"function",
"goto",
"if",
"implements",
"import",
"in",
"instanceof",
"int",
"interface",
"long",
"native",
"new",
"null",
"package",
"private",
"protected",
"public",
"return",
"short",
"static",
"super",
"switch",
"synchronized",
"this",
"throw",
"throws",
"transient",
"true",
"try",
"typeof",
"var",
"void",
"while",
"with");

var htmlkeyword = new Array(
"document",
"Array"
);

var entity = new Array(
"&lt;",
"&gt;",
"&amp;",
"&nbsp;"
);

</script>

</HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值