我想用Java实现一个简单的语法高亮程序,通过正则表达是来匹配关键字、注释之类的字段并替换为如<font color="red">匹配到的字段</font>这样的HTML字符串,这样就能达到高亮的效果。
但考虑到要进行高亮处理的代码串中可能包含如>、<、"和&等字符,则必须把这些字符转换为如如&lt;这样的HTML实体才能在HTML页面中正常显示。
我所考虑到的不可行思路如下:
1. 先通过正则表达是来匹配关键字、注释之类的字段并替换为如<font color="red">匹配到的字段</font>这样的HTML字符串,再替换如>、<、"和&等字符为HTML实体。(这样会把先前替换到的如<font color="red">这样的HTML串中的大于号和小于号也替换掉)
2. 先替换代码串中如>、<、"和&等这样的字符为HTML实体,再通过正则表达是来匹配关键字、注释之类的字段并替换为如<font color="red">匹配到的字段</font>这样的HTML字符串。(这样正则表达式就很肯能匹配不到相应的字段了)希望各位朋友能为我提供一个详细可行的思路,,非常感谢!!!!

解决方案 »

  1.   

    1.在相应keywords外面添加<font name="highlight" color="red"></font>,用正则2.正则替换<font name="highlight" color="red">与</font>之间的<,>为实体,这个可以用正则,可以用DOM,可以用XMLwriter,随便
      

  2.   

    shrinerain(圣影雨),您的思路好像也有Bug,如果待加亮处理的代码中本身也包含<font name="highlight" color="red"></font>这类字符串,就会出现问题了;还有就是除了keywords需要替换HTML实体,其他字符串也要替换。
      

  3.   

    if(keyword.Text != "" && keyword.Text != null )
    {
    for(int iloop =0 ;iloop < dstemp.Tables[0].Rows.Count ;iloop ++ ) {
    dstemp.Tables[0].Rows[iloop]["name"] = dstemp.Tables[0].Rows[iloop]["name"].ToString().Replace(keyword.Text,"<font color=red>" + keyword.Text + "</font>");}
    }
      

  4.   

    先将要查找的东西HTMLEncode……